引用我同事的话:
VBA 中的所有变量都是变体,但具有不同的 vartype:
Dim x '--->variant with vartype = vbEmpty x= "hello" '--->vartype changed from vbEmpty to vbString and value assigned x= 1 '--->vartype changed to vbInteger
Dim x as String '--->variant with vartype = vbEmpty is created and then vartype changed to vbString x= "hello" '--->vartype = vbString x=1 '--->because x was declared explicitly with String it will try to implicitly convert 1 to string, so, x will remain vbString
我的主要争论点是如何才能Dim x as String
符合他的说法all variables in VBA are variants
。变体的工作效率更低,所以为什么一切都从那里开始并被转换。
VBA中的所有变量都是变体吗?
任何人都可以找到任何文档或提供可以以一种或另一种方式明确证明答案的代码吗?
编辑
他提出以下内容作为尝试证明上述内容的开始 - 但我认为它证明的只是它们都是字符串:
Sub aaa()
Dim str_str As String
Dim str_var
str_str = "aaa"
str_var = "aaa"
str_xxx = "aaa"
MsgBox VarType(str_str) & ": " & TypeName(str_str)
MsgBox VarType(str_var) & ": " & TypeName(str_var)
MsgBox VarType(str_xxx) & ": " & TypeName(str_xxx)
End Sub