excel - VBA 中的变体数据类型及其积极用途

标签 excel vba

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/

相关文章:

vba - 获取枚举的等效文本

VBA如何将整数传递给范围值

process - 宏完成后 Excel.exe 保留在内存中

Excel自动保存更新 "Date Modified"

excel - .NumberFormat有时会返回错误的日期和时间值

VBA Excel - 使用单个变量将多个值分配给数组

vba - 当 TRIM 功能和替换功能都不起作用时,如何删除 VBA 中的空格?

python - 如何使用python删除excel中的合并行?

java - Apache POI - 将 .html 电子表格转换为 .xls 电子表格

Excel:比较两个不同工作表中的名称