Google 上有很多关于变体数据类型的内容。大多数情况下,他们会说“避免过多使用它,这就是原因”或“它可以保存任何类型的数据”,我明白这些。但我仍然不完全明白何时使用它们。有人可以简明地解释一下,更重要的是,给出变体数据类型的最佳使用示例(甚至可能是将变体传递给函数而不是显式声明的变量的示例)?
最佳答案
一般来说,始终使用尽可能小的内存变量。变体是最大的,因此只有在没有更好的类型时才应使用它。以下是一些示例
数组()
Array
函数返回一个包含数组的变体。使用Array
的唯一方法是分配给一个变体。
vArr = Array(1, "a", True)
将数组分配给范围
如果您必须将一堆数据写入单元格,则将它们放入数组中并一次写入所有数据比一次写入一个单元格要快得多。如果您的数据都是相同的数据类型,请使用类型正确的数组。但如果数据不完全相同,您可能需要使用变体数组。
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
反之亦然 - 无论单元格中的数据类型如何,范围到数组都需要 Variant
vArr = Range("A1:C10").Value
工作表函数
某些(全部?)工作表函数可能会返回错误及其正常值。例如,唯一可以容纳 Double 和 Error 的数据类型是 Variant。
vRes = Application.WorksheetFunction.Match(...)
这是我能想到的三个例子。可能还有更多。
关于excel - VBA 中的变体数据类型及其积极用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37886777/