在VBA excel中将值指定给类变量时,不会设置该值。如何设置类声明的变量?
我对VBA很陌生,但我一直在努力找出这里出了什么问题。当我试图从模块中的子模块设置在类模块中声明的变量时,由于某种原因,该值没有赋值,我也不知道为什么。如何让变量在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不返回任何内容,尽管我知道调用
table
一直到函数调用response=add\u edit\u data(“fund\u management.db”,table)
?它会编译并运行,直到到达add\u edit\u data
函数,如果没有此变量,该函数当然不起作用。Sub中的MyDebug.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是不正确的——这是可选的——但这是最佳实践,如果您这样做了,这个问题会更容易诊断。请注意,可以省略和。