variant()和variant之间有什么区别吗?

Exc*_*ers 5 excel vba excel-vba

考虑

Dim u As Variant, v() As Variant

u = Range("A1:B3").Value
v = Range("A1:B3").Value
Run Code Online (Sandbox Code Playgroud)

你和v之间现在有什么区别吗?如果不是,将v声明为变量数组而不是将其简单地声明为变体是否是多余的?

Bat*_*eba 3

存在差异。将 a 视为Variant存在于计算机上较低级别的东西,并且具有 VBA 的应用程序编程接口 (API)。这个底层的东西就是 a VARIANT,Windows 附带了几个函数,允许您用多种语言来操作它;VBA 就是其中之一。

v是此类 的 Visual Basic 数组VARIANTu是单个数组。

发现差异的一种方法是使用VarType(v)which 计算结果为vbArray + vbVariantVarType(u)评估为vbEmpty. 您可以在分配范围内容之前对此进行测试。

在您的具体情况下,Excel-VBA 在分配 to 时做了一些有趣的事情(我不认为有任何其他术语)v:它“知道”目标类型是一个数组,并执行稍微不同的强制转换。uv被设置为 an 的值时完全相同Excel.Range