我来自面向对象的背景。为什么“Test”(注意引号)显示在此代码片段中(在消息框中)。我期望逻辑测试:'如果Test =“True”'返回False,因为变体包含布尔值而不是字符串。因此,我不希望消息框出现,但确实如此:
Dim Test As Variant
Test = True
If Test = "True" Then //line 5
MsgBox ("Test")
End If
答案 0 :(得分:8)
Variant
类型值(以及支持它们的大多数其他语言)根据需要自动在数据类型之间进行转换;它们在COM交互中被广泛使用。
您正在使用的代码使用从布尔到字符串的自动(隐式)转换:
if Test = "True"
使用后,因为它是原始分配的类型(布尔值)
Test = True
但是,在这里,你根本就没有使用变体;您正在使用硬编码字符串"Test"
。
答案 1 :(得分:0)
他们解释为什么在MessageBox中出现Test这个词是因为你在消息框中显示字符串“Test”
MsgBox ("Test")
你应该使用这个
MsgBox (Test)