通过 For 循环更改 UserForm 元素的可见性
Change the visibility of UserForm elements via For loop
我有一个固定大小的数组,其中填充了 ComboBox。当用户单击另一个 UserForm 元素(在我的例子中是一个 CheckBox)时,此数组中每个 ComboBox 的可见性都应该改变。当我 运行 下面的代码片段时,我得到 424 Object Required 错误。我很可能犯了一个简单的语法错误,但如果能提供有关如何正确编写此代码的任何指导,我们将不胜感激。
Private Sub MyCheckBox_Click()
Dim CheckBoxStatus as Boolean: CheckBoxStatus = MyUserForm.MyCheckBox.Value
Dim ComboBoxArray(0 To 4)
ComboBoxArray(0) = MyUserForm.ComboBox1 ' This line repeated and modified for the other 4 array members
If CheckBoxStatus Then
For i = LBound(ComboBoxArray) To UBound(ComboBoxArray)
CompetitorComboBoxes(i).Visible = True ' THIS IS WHERE THE ERROR IS THROWN
Next i
Else
' Appropriate else code to set the visibilities to False
End Sub
您需要 Set
对象引用,因此:
Set ComboBoxArray(0) = MyUserForm.ComboBox1
Dim ComboBoxArray(0 To 4)
创建一个包含 5 个元素的数组,而不是 4 个盒子所需的 4 个元素,因此您应该 Dim ComboBoxArray(0 To 3)
(或者只是 Dim ComboBoxArray(3)
) 否则最后一个元素将为空并且对其调用 .Visible
将失败。
(我假设 CompetitorComboBoxes
是 ComboBoxArray
的拼写错误)
我有一个固定大小的数组,其中填充了 ComboBox。当用户单击另一个 UserForm 元素(在我的例子中是一个 CheckBox)时,此数组中每个 ComboBox 的可见性都应该改变。当我 运行 下面的代码片段时,我得到 424 Object Required 错误。我很可能犯了一个简单的语法错误,但如果能提供有关如何正确编写此代码的任何指导,我们将不胜感激。
Private Sub MyCheckBox_Click()
Dim CheckBoxStatus as Boolean: CheckBoxStatus = MyUserForm.MyCheckBox.Value
Dim ComboBoxArray(0 To 4)
ComboBoxArray(0) = MyUserForm.ComboBox1 ' This line repeated and modified for the other 4 array members
If CheckBoxStatus Then
For i = LBound(ComboBoxArray) To UBound(ComboBoxArray)
CompetitorComboBoxes(i).Visible = True ' THIS IS WHERE THE ERROR IS THROWN
Next i
Else
' Appropriate else code to set the visibilities to False
End Sub
您需要 Set
对象引用,因此:
Set ComboBoxArray(0) = MyUserForm.ComboBox1
Dim ComboBoxArray(0 To 4)
创建一个包含 5 个元素的数组,而不是 4 个盒子所需的 4 个元素,因此您应该 Dim ComboBoxArray(0 To 3)
(或者只是 Dim ComboBoxArray(3)
) 否则最后一个元素将为空并且对其调用 .Visible
将失败。
(我假设 CompetitorComboBoxes
是 ComboBoxArray
的拼写错误)