VBA - 由于某种原因使用get / let属性不会设置

时间:2014-04-02 22:33:17

标签: excel class vba excel-vba properties

警告:我是VBA的新手。

我有以下类,名为TestClass

Option Explicit
Private pName As String

Private Sub Class_Initialize()
    Name = "test_1"
End Sub
Public Property Get Name() As String
    Name = pName
End Property
Public Property Let Name(Value As String)
    pName = Value
End Property

我有一个子程序,我连接到一个按钮点击事件,如下所示:

Sub DisplayTestValue()

    Dim testClass As testClass

    With testClass
        MsgBox "default value: " & testClass.Name
    End With

    testClass.Name = "Tom"

    MsgBox "set to (Tom) value: " & testClass.Name

End Sub

然后我点击按钮。它调用子程序。我收到以下错误消息:

Run-time error '91':

Object variable or With block variable not set

调试器在以下代码行停止:

MsgBox "default value: " & testClass.Name

调试器告诉我没有设置testClass.Name!我对此感到非常困惑,因为我将“test_1”的默认值设置为类Initializer中的Name属性。

有人可以向我解释一下我做得不对吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案

在实例化New的对象时,我没有使用关键字TestClass

为:

Dim testClass As testClass

好:

Dim testClass As New testClass