考虑
Dim u As Variant, v() As Variant
u = Range("A1:B3").Value
v = Range("A1:B3").Value
你和v之间现在有什么区别吗?如果不是,将v声明为变量数组而不是将其简单地声明为变体是否是多余的?
答案 0 :(得分:2)
存在差异。可以认为Variant
是机器上低级别存在的东西,并且具有VBA的应用程序编程接口(API)。那个低级别的东西是VARIANT
,Windows附带了几个允许你用多种语言操作它的函数; VBA就是其中之一。
v
是此类VARIANT
的Visual Basic数组,u
是单个数组。
发现差异的一种方法是使用评估为VarType(v)
的{{1}}。 vbArray + vbVariant
评估为VarType(u)
。您可以在分配范围内容之前对此进行测试。
在您的特定情况下,Excel-VBA在分配给vbEmpty
时正在做一些时髦的事情(我认为没有任何其他术语):它“知道”目标类型是一个数组并执行强制略有不同。设置为v
的值时,u
和v
完全相同。