Vba 无法通过另一个修改对象-运行时错误91

Vba 无法通过另一个修改对象-运行时错误91,vba,class,object,combobox,controls,Vba,Class,Object,Combobox,Controls,假设我有一个用户表单,在运行时创建了两个组合框。第一个组合源于A1:A2(水果、蔬菜)中的项目。我希望第二个组合源于B1:B2(苹果、橙色)或C1:C2(胡萝卜、西红柿),取决于用户在第一个组合中选择的内容。在我名为“FoodClass”的班级下面 然后是我在用户表单中的代码: Option Explicit Public ComboBox1 As FoodClass Public Combobox2 As FoodClass Private Sub UserForm_Initialize(

假设我有一个用户表单,在运行时创建了两个组合框。第一个组合源于A1:A2(水果、蔬菜)中的项目。我希望第二个组合源于B1:B2(苹果、橙色)或C1:C2(胡萝卜、西红柿),取决于用户在第一个组合中选择的内容。在我名为“FoodClass”的班级下面

然后是我在用户表单中的代码:

Option Explicit

Public ComboBox1 As FoodClass
Public Combobox2 As FoodClass

Private Sub UserForm_Initialize()

    Set ComboBox1 = New FoodClass
    Call ComboBox1.DrawCombo1(UserForm)

    Set Combobox2 = New FoodClass
    Call Combobox2.DrawCombo2(UserForm)

End Sub

每次用户更改时,都会出现第一个组合框错误91。如何逐个修改一个对象?

UserForm\u Initialize
中,仅创建
FoodClass
的一个实例,因此此实例将初始化两个组合框:

dim food as FoodClass
Set food = New FoodClass
call food.DrawCombo1(UserForm)
call food.DrawCombo2(UserForm)
注意:关键字
Me
可以在UserForm类内部使用,而不是
UserForm
Me
引用UserForm的当前实例


为什么需要VBA?您可以有两个列表框,并在第二个列表框上使用
间接
。您在FoodClass类中有两个组合,您创建了FoodClass的两个实例,但每个实例只有一个已初始化的组合。第二个未设置。这就是出现错误91的原因。正在工作!:)非常感谢。这个论坛太棒了。你只是让波兰南部的某个地方的人的生活更轻松。当我完成我的宏时,我公司大约130人将得到一个(希望很棒的)工具:)非常感谢!)
dim food as FoodClass
Set food = New FoodClass
call food.DrawCombo1(UserForm)
call food.DrawCombo2(UserForm)
call food.DrawCombo1(Me)