VBA Select case 1 to 100 只取 1
Posted
技术标签:
【中文标题】VBA Select case 1 to 100 只取 1【英文标题】:VBA Select case 1 to 100 only taking 1 【发布时间】:2020-04-17 22:47:05 【问题描述】:我正在尝试创建一个选择案例来识别一个数字是小于 0、1 到 100 还是大于 100,事实是这不起作用。这是我的代码:
If IsNumeric(TxtTemp.Text) Then
Select Case TxtTemp.Text
Case Is <= 0
TxtEstado.Text = "Solid"
Case 1 To 100
TxtEstado.Text = "Liquid"
Case Is > 100
TxtEstado.Text = "Gas"
End Select
Else
TxtEstado.Text = ""
End If
我知道这是一件容易的事情,事情是只有当接收到的数字等于 1 时,select 案例才返回液体。如果它小于或等于 0,它会返回固体,但如果它等于或大于 2,它返回气体。我不明白我做错了什么。
【问题讨论】:
试试Select Case CDbl(TxtTemp.Text)
您需要将一个数字与其他数字进行比较。
对于任何编程语言都要记住这一点:“字符串或字符1
与数字 1 不同”,即使它们在视觉上看起来相同。所以需要转换成相同的Data类型进行比较。
只是在此处添加`Case Is > 100`可能是Case Else
好的,这是有道理的,我最终做的是将'TxtTemp.Text'存储在一个双变量中并且它有效,现在它为什么有效并且你的答案是一个更好的方法是有道理的做它。谢谢!
【参考方案1】:
也许使用函数进行这种转换更容易
Function chText(txt As String) As String
On Error GoTo EH
Dim resTxt As String
If IsNumeric(txt) Then
Select Case CDbl(txt)
Case Is <= 0
resTxt = "Solid"
Case 1 To 100
resTxt = "Liquid"
Case Is > 100
resTxt = "Gas"
End Select
Else
resTxt = ""
End If
chText = resTxt
Exit Function
EH:
chText = "Error"
End Function
Sub Tester()
Debug.Print chText("101")
' TxtEstado.Text = chText(TxtTemp.Text)
End Sub
【讨论】:
以上是关于VBA Select case 1 to 100 只取 1的主要内容,如果未能解决你的问题,请参考以下文章
Select Case 语句 - IF 语句 - 定义数组 - VBA
使用C#如何表达VBA“select case control.ID”
为啥我会从 VBA Select Case 获得随机/错误的输出?