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

标签 excel vba

考虑

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 + vbVariantVarType(u) 的计算结果为 vbEmpty。您可以在分配范围内容之前对此进行测试。

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

关于excel - variant() 和variant 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27250592/

相关文章:

excel - 从快捷键运行宏时不出现输入框

vba - 删除工作表/图表事件 VBA

python - 将带有值列表的字典写入 Excel 文件

excel - VBA:什么是97.45 * 1#=?

excel - VBA 使用循环映射数据集

vba - Excel 页眉/页脚不会通过 VBA 更改,除非为空

class - 创建一个类来处理 Access 表单控件事件

sql - 使用excel连接远程sql数据库

excel - 宏的运行时间越来越长

excel - 压缩两个和的差的公式