gpt4 book ai didi

vba - 在 VBA 中,所有变量都以变体类型开始吗

转载 作者:行者123 更新时间:2023-12-05 01:15:08 25 4
gpt4 key购买 nike

引用我同事的话:

all variables in VBA are variants but with different 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

最佳答案

您可以使用 Debug 和 Locals 窗口证明您的同事所说的不正确:
enter image description here
Dim as string 创建一个字符串类型,但 Dim as Variant 并分配一个字符串会为您提供一个带有字符串子类型的变体

关于vba - 在 VBA 中,所有变量都以变体类型开始吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com