VBA中的变体数据类型及其正面使用

Bri*_*ian 2 excel vba excel-vba

关于变体数据类型,Google上有很多东西.大多数情况下,他们说喜欢的东西"Avoid using it too much and here's why""It can hold any type of data"我明白这事情.但我还是不完全明白何时使用它们.有人可以简明扼要地解释一下,更重要的是,给出变量数据类型的最佳用法示例(甚至可能是将变量传递给函数而不是显式声明变量的示例)?

Dic*_*ika 5

通常,始终使用最小的内存变量.Variant是最大的,所以你应该只在没有更好的类型时使用它.这里有些例子

阵列()

Array函数返回包含数组的变体.您可以使用的唯一方法Array是分配变量.

vArr = Array(1, "a", True)
Run Code Online (Sandbox Code Playgroud)

将数组分配给范围

如果你必须将一堆数据写入单元格,那么将它们放入数组中并将它们全部写入一次而不是一次写入一个单元格会更快.如果您的数据都是相同的数据类型,请使用正确类型的数组.但如果不是所有相同的数据,您可能需要使用变量数组.

Dim vaWrite(1 To 2, 1 To 2) As Variant

vaWrite(1, 1) = 1
vaWrite(1, 2) = "Bob"
vaWrite(2, 1) = 2
vaWrite(2, 2) = "Tim"

Range("A1").Resize(2, 2).Value = vaWrite
Run Code Online (Sandbox Code Playgroud)

另一方面 - 无论单元格中的数据类型如何,范围到数组都需要Variant

vArr = Range("A1:C10").Value
Run Code Online (Sandbox Code Playgroud)

工作表函数

一些(所有?)工作表函数可以返回错误以及它们的正常值.唯一可以容纳的数据类型,例如Double和Error是Variant.

vRes = Application.WorksheetFunction.Match(...)
Run Code Online (Sandbox Code Playgroud)

这是我能想到的三个例子.可能会有更多.