VBA:复制excel列:存储单元格引用的最佳实践?

时间:2017-05-07 12:05:10

标签: excel vba excel-vba

我有一个包含数据的大文件,每周更新一次,VBA脚本从中复制许多不同长度和起点的列,然后将这些列逐个粘贴到另一个文件中。

我的问题是如何最好地存储脚本需要能够复制正确列的单元格引用?目前有一堆数组存储起始行号,起始列号,表单号等,它们都被索引相同,以及一个循环函数,它执行实际的复制粘贴工作。

如果源文件在某些​​时候略有变化,这个(特别糟糕的?)解决方案显然会是绝对的噩梦。那么如何做得更好呢?

1 个答案:

答案 0 :(得分:0)

Excel正在使用枚举来实现此目的。枚举是为常量指定名称的最有效方法。

[Private] Enum WeeklyReport
    FirstRow = 3
    StartColumn = 1         ' Columns:
    Text
    Values
    Totals = 17
    Remarks
End Enum

上述声明指定枚举WeeklyReport,其中包含5个值,一行和四列。 Text的值为2,因为如果省略该值,则前一个值加1.因此,Remarks = 18。

您可以按其全名调用值,例如WeeklyReport.Remarks或其简称,例如Remarks。这就是为什么Excel为其枚举提供了唯一的名称,例如xlUp,您可能一直在使用它而不知道枚举的名称。上面给出的名字是可能的,但不是很好。

枚举是他们自己的数据类型,可以与Long互换。在任何代码之前声明,在代码表的顶部,如果是私有的话,它们在整个表单中可用,否则在整个项目中都可用。