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

时间:2014-12-02 13:24:05

标签: excel-vba vba excel

考虑

Dim u As Variant, v() As Variant

u = Range("A1:B3").Value
v = Range("A1:B3").Value

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

1 个答案:

答案 0 :(得分:2)

存在差异。可以认为Variant是机器上低级别存在的东西,并且具有VBA的应用程序编程接口(API)。那个低级别的东西是VARIANT,Windows附带了几个允许你用多种语言操作它的函数; VBA就是其中之一。

v是此类VARIANT的Visual Basic数组,u是单个数组。

发现差异的一种方法是使用评估为VarType(v)的{​​{1}}。 vbArray + vbVariant评估为VarType(u)。您可以在分配范围内容之前对此进行测试。

在您的特定情况下,Excel-VBA在分配给vbEmpty时正在做一些时髦的事情(我认为没有任何其他术语):它“知道”目标类型是一个数组并执行强制略有不同。设置为v的值时,uv完全相同。