通过 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 将失败。

(我假设 CompetitorComboBoxesComboBoxArray 的拼写错误)