【发布时间】:2021-08-30 14:11:51
【问题描述】:
此语句回答否,我可以回答是吗? Arr(0) 是否返回 2 但 2 不等于 2。我认为 A_arr 作为字符串如何将其替换为数组中的整数?
Private Sub aaa()
Dim aaa As String
A = "2,3,4"
A_arr = Split(A, ",")
MsgBox A_arr(0)
Dim B_arr As Variant: B_arr = Array(2, 3, 4)
MsgBox B_arr(0)
If A_arr(0) = B_arr(0) Then
MsgBox "YES"
Else
MsgBox "NO"
End If
End Sub
【问题讨论】:
-
If Int(A_arr(0)) = B_arr(0) Then但这只会将其作为整数返回以进行检查,而不是实际上将其转换为数组中的整数 -
这与数组无关,与变体有关。
Dim a, b: a = 2: b = "2": Msgbox a = b=> 错误。Dim a as long, b as string: a = 2: b = "2": Msgbox a = b=> 是的。 -
非常感谢克里斯托弗。
-
技术上是 stackoverflow.com/q/18678481/11683 的副本,但它是 not very satisfactory。
-
这实际上是我第一次看到 same 代码在 VBA 和 VBScript 中的工作方式的重要区别。
"2" = 2在 VBA 和 VBScript 中均为 True,但CStr(2) = CLng(2)在 VBA 中为 True,在 VBScript 中为 False(出于相同的变体比较原因)。