在VBA中定义全局类变量

时间:2015-07-26 20:18:52

标签: vba scope

我正在尝试设置一个依赖于类属性值的私有类变量。我希望在相应属性的Let过程之后设置类变量。

我尝试了许多不同的方法并遇到了各种各样的错误。首先,Sub Class_Initialize似乎不合适,因为我需要首先定义属性的值,然后设置变量。事实上,这种方法会使"下标超出范围。"错误。我还想避免编写一个子程序或一个设置值的函数,因为这条路线不会非常清理代码(设置变量是微不足道的,我只是不想要这样做)在每个函数和子例程中反复出现。)

对我来说,一种看似非常直观的方法是按如下方式设置类:

Private pFileName As String

Private ws As Worksheet

Public Property Let FileName(fileString As String)
    pFileName = fileString
    Set ws = Workbooks("file.xlsx").Sheets(fileString)
End Property

Public Sub doSomethingWithWS()
    'Here I try to use ws for something.
End Sub

该类(称为clsDataTable)可以从单独的模块实例化,如下所示:

Private Sub ClassTest()

    Dim tryClass As clsDataTable
    Set tryClass = New clsDataTable

    tryClass.FileName = "Sheet 1"

    tryClass.doSomethingWithWS

End Sub

当我运行此代码时,我得到一个未设置的" Object变量。"错误。

这似乎应该有一个简单的解决方案,但到目前为止,我已经陷入困境。

感谢任何帮助。

0 个答案:

没有答案