私の同僚を引用するには:
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