在VBA excel中将值指定给类变量时,不会设置该值。如何设置类声明的变量?

在VBA excel中将值指定给类变量时,不会设置该值。如何设置类声明的变量?,excel,vba,Excel,Vba,我对VBA很陌生,但我一直在努力找出这里出了什么问题。当我试图从模块中的子模块设置在类模块中声明的变量时,由于某种原因,该值没有赋值,我也不知道为什么。如何让变量table一直到函数调用response=add\u edit\u data(“fund\u management.db”,table)?它会编译并运行,直到到达add\u edit\u data函数,如果没有此变量,该函数当然不起作用。Sub中的MyDebug.Print checkpopup.table不返回任何内容,尽管我知道调用

我对VBA很陌生,但我一直在努力找出这里出了什么问题。当我试图从模块中的子模块设置在类模块中声明的变量时,由于某种原因,该值没有赋值,我也不知道为什么。如何让变量
table
一直到函数调用
response=add\u edit\u data(“fund\u management.db”,table)
?它会编译并运行,直到到达
add\u edit\u data
函数,如果没有此变量,该函数当然不起作用。Sub中的My
Debug.Print checkpopup.table
不返回任何内容,尽管我知道调用Sub的变量
table
被正确设置为
Debug.Print table
在从Sub内部调用时返回正确的值

我的模块如下所示:

Private checkpopup As class_checkpopup

Public Sub checkbox_popup_fund(table)
    Set checkpopup = New class_checkpopup
    checkpopup.Show
    checkpopup.table = table
    Debug.Print checkpopup.table
End Sub
课程模块为:

Public table As String
Private WithEvents check_box_popup As check_box

Private Sub Class_Initialize()
    Set check_box_popup = New check_box
End Sub

Public Sub Show()
    check_box_popup.Show
End Sub

Private Sub check_box_popup_Closed()
End Sub

Private Sub check_box_popup_Yes()
    response = add_edit_data("fund_management.db", table)
End Sub
我通过以下方式激活eventhandler:

Public Event Yes()

Private Sub check_box_yes_Click()
    RaiseEvent Yes
End Sub

感谢尼古拉斯·亨特和瓦里塔斯帮了我的忙。我不知道在显示表单之前设置变量很重要,但确实如此。我将模块更改为:

Private checkpopup As class_checkpopup

Public Sub checkbox_popup_fund(table)
    Set checkpopup = New class_checkpopup
    Let checkpopup.table = table
    checkpopup.Show
    Debug.Print checkpopup.table
End Sub

现在,我的价值观贯穿于我的整个职能。非常感谢您的帮助

如果我能编译您的代码,我可能会提供帮助。您在哪个模块中定义事件?复选框定义在哪里?VBA处理类模块中的变量,如该类的属性。因此,必须使用
属性集
(对于对象)或
属性让
过程为其赋值。@Nicholas Hunter:复选框是一个包含两个命令按钮和一个标签的表单。单击其中一个按钮(表示“是”的按钮)时激活此事件@Variatus:我不知道你的意思,行
checkpopup.table=table
应该改为
Let checkpopup.table=table
?我试过了,但没用。仍然没有任何内容传递到我的
add\u edit\u data
在显示表单之前,需要设置表的值@当他们说您“必须”使用属性getter和setter时,Variatus是不正确的——这是可选的——但这是最佳实践,如果您这样做了,这个问题会更容易诊断。请注意,可以省略和。