用户窗体控件 - 循环和检查值

Userform controls - looping and checking value

我正在尝试循环访问用户窗体上的两组控件。如果两个控件(切换按钮)的组合为真,则执行某些操作。从创建控件的用户窗体调用 sub。这是我第一次使用用户窗体控制变量,下面的代码无法编译,所以这可能是完全错误的。请问有什么建议吗?

更新了代码示例,但出现编译错误。见下图:

Private Sub CONTROLS_Click()
Dim X As Integer, Y As Integer
Dim BOOK As Variant, STRAT As Variant

BOOK = Array("TYPE1", "TYPE2")
STRAT = Array("FAST", "MEDIUM", "SLOW")


For X = LBound(BOOK) To UBound(BOOK)
    If Me.CONTROLS(BOOK(X)).Value = True Then
        For Y = LBound(STRAT) To UBound(STRAT)
             If Me.CONTROLS(STRAT(Y)).Value = True Then
                'DO SOMETHING
            End If
        Next Y
    End If
Next X


End Sub

这些都是 1 的数组。

BOOK = Array("TYPE1, TYPE2")
STRAT = Array("FAST,MEDIUM,SLOW")

他们应该是,

BOOK = Array("TYPE1", "TYPE2")
STRAT = Array("FAST", "MEDIUM", "SLOW")

变体数组通常从零开始; BOOK 数组中的第一个元素位于 BOOK(0)。他们在直接从工作表中填充时使用基于 1 的索引,因为如果显式重新调整为从 1 开始。最好使用 LBound function and UBound function 来确定所有的下边界和上边界时间.

 Private Sub CONTROLS_Click()
    Dim X As Integer, Y As Integer
    Dim BOOK As Variant, STRAT As Variant

    'Type1, Type2, Fast, Medium and Slow are the names of the togglebuttons
    BOOK = Array("TYPE1", "TYPE2")
    STRAT = Array("FAST", "MEDIUM", "SLOW")

    For X = LBound(BOOK) To UBound(BOOK)
        If Me.CONTROLS(BOOK(X)).Value = True Then
            For Y = LBound(STRAT) To UBound(STRAT)
                 If Me.CONTROLS(STRAT(Y)).Value = True Then
                    'DO SOMETHING
                End If
            Next Y
        End If
    Next X

 End Sub

这应该可以修复您的数组赋值和嵌套 For ... Next 循环。