【发布时间】:2014-01-08 21:55:10
【问题描述】:
我已经使用 VBA 大约一个月了,这个论坛对于我的第一个“编程”语言来说是一个很好的资源。随着我开始熟悉 VBA 数组,我开始想知道存储变量的最佳方式是什么,而且我敢肯定这里有人知道可能是编程新手问题的答案:
例如,有 10 个 String 变量彼此独立使用或 String 变量数组彼此独立使用之间有什么区别(独立我的意思是它们在数组中的位置无关紧要它们在程序中的使用)。我使用的一些代码可能有大约 9 个公共变量。将它们设置为一个数组有什么好处,尽管我不需要保留它们的顺序 vis 彼此?例如我本来可以的
Public x As String
Public y As String
Public v As String
Public w As String
或者
Public arr(1 to 4) As String
arr(1) = x
arr(2) = y
arr(3) = v
arr(4) = w
就我需要对代码做什么而言,这两个版本在功能上是等效的。但是有理由使用其中一个而不是另一个吗?
与此相关,我可以将数组转置为 Excel 字段,并使用 xlUp 和 xlDown 在数组中移动各种值。但是我也可以通过类似的方式在数组中移动,方法是在“抽象地”保存的数组中查找具有特定值或位置的元素。* 有时我发现,一旦将数组值转置到工作表中,使用 @987654327 操作它们会更容易@ 和 xlDown。除了必须有专门的工作表空间来执行此操作之外,这是否比遍历“抽象”* 数组(如果 Applications.ScreenUpdating = False)更糟糕(时间、处理能力、可靠性等)?
*这对数学家/严肃的程序员来说可能意味着一些技术性的东西——我想说的是一个不使用工作表网格的可视化显示的数组。
编辑:
感谢您提供有趣的答案。我不确定我的问题的第二部分是否完全算作第二个问题,因此我违反了论坛的规则,或者它是否已连接,但我很乐意勾选也考虑过它的答案
【问题讨论】:
-
更好是一个非常主观的术语。对于小型数据集/属性类型数据,特定变量提供更清晰的代码和更快的访问。但是你不能用字段/属性样式变量做所有事情,并且在有数据的情况下需要数组或字典或其他集合类型。
-
使用数组而不是电子表格要好得多——几乎总是如此。有时我会在重新填充数组之前使用 Excel 过滤器或排序例程的工作表。请注意,您也可以使用
arr = Array("String 1", "String 2", "String 3")快速创建变体数组。
标签: arrays performance excel vba