我正在尝试设置一个依赖于类属性值的私有类变量。我希望在相应属性的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变量。"错误。
这似乎应该有一个简单的解决方案,但到目前为止,我已经陷入困境。
感谢任何帮助。