我的数据对象在VBA中应该具有什么范围

时间:2011-01-26 10:26:27

标签: vba procedural-programming

我正在从工作表数据中填充一组数组。然后我在将数据写入另一个工作表之前操作数据(参见下面的示例)。

如果我想再次使用相同的工作表数据,如何避免重写从工作表填充数组的代码?

  • 我应该在一个长程序中编写代码,这样我就不需要重新填充数组了吗?
  • 我应该将数组设置为全局数据,以便它们可以在多个过程中重用吗?
  • 我应该只将数组传递给长参数列表中需要它们的过程吗?
  • 还有其他选择吗?

Sub ManipulateData()
    Dim people(1 To MAX_DATA_ROW) As String
    Dim projects(1 To MAX_DATA_ROW) As String
    Dim startDates(1 To MAX_DATA_ROW) As Date
    Dim endDates(1 To MAX_DATA_ROW) As Date
    ...
    Loop through worksheet cells to populate arrays
    ...
    Do something with array data

End Sub

1 个答案:

答案 0 :(得分:1)

我创建了一个包含数组private变量的类,然后创建一个名为Initialise或类似的公共子,它可以加载所有内容,然后根据需要为其他子/函数提供你需要的功能。

这样你就不必传递阵列,但它们仍然不是全局的。将它们设置为全局的问题在于,其他地方的某些其他代码会以某种方式更改数组的风险更大,因为这可能是代码库中的任何地方都可能很难找到的代码。

这是Excel VBA中的introduction to classes