考虑
Dim u As Variant, v() As Variant
u = Range("A1:B3").Value
v = Range("A1:B3").Value
现在u和v之间有什么区别吗?如果不是,那么将 v 声明为变体数组而不是简单地将其声明为变体是否多余?
最佳答案
存在差异。将 Variant
视为存在于计算机上较低级别的东西,并且具有 VBA 的应用程序编程接口(interface) (API)。这个低级的东西就是 VARIANT
,Windows 附带了几个函数,允许您用多种语言操作它; VBA 就是其中之一。
v
是此类 VARIANT
的 Visual Basic 数组,u
是单个数组。
发现差异的一种方法是使用 VarType(v)
,其计算结果为 vbArray + vbVariant
。 VarType(u)
的计算结果为 vbEmpty
。您可以在分配范围内容之前对此进行测试。
在您的具体情况下,Excel-VBA 在分配给 v
时做了一些有趣的事情(我认为没有任何其他术语):它“知道”目标类型是一个数组并执行稍微不同的强制。 u
和 v
完全相同,被设置为 Excel.Range
的值。
关于excel - variant() 和variant 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27250592/