类模块代码,用于在单击任何复选框时运行循环

时间:2017-10-03 15:17:51

标签: excel-vba class for-loop vba excel

这是从前一个线程开始的,我想在每次单击任何复选框时执行代码。 jsotola非常友好,可以帮助我定义触发事件。以下是该主题的链接:Event triggered by ANY checkbox click

现在,我正在尝试修改类模块中的ChkBoxGroup_Click()Sub以满足更具体的需求。我已经在一个单独的工作簿中测试了代码作为一个独立的Sub,我可以用F5手动执行,它完全按照我的希望工作。由于我希望它与复选框点击一起运行,我想我可以将它粘贴到类模块中,但我收到一个错误,我希望有人可以提供帮助。

这是我在类模块中所拥有的:“ChkClass”     选项明确

Public WithEvents ChkBoxGroup As MSForms.CheckBox

Private Sub ChkBoxGroup_Change()
Debug.Print "ChkBoxGroup_Change"
End Sub

Private Sub ChkBoxGroup_Click()
Dim findrow As Long, findrow2 As Long
findrow = Range("B:B").Find("Feature Styles", Range("B1")).Row
findrow2 = Range("B:B").Find("Feature Options", Range("B" & findrow)).Row
For i = findrow To findrow2

    If Range("B" & i).Value = Range("O" & i).Value Then
        Range("C" & i).Value = True
    Else: Range("C" & i).Value = False
    End If
Next i
End Sub

当我单击一个复选框时,我收到一个错误框,上面写着“编译错误:变量未定义”。它还突出了这一行中的“i”:

For i = findrow To findrow2    

它在我的另一个工作表中作为独立子工作很好,如下所示:

Sub FeatureStyles_TorF()
Dim findrow As Long, findrow2 As Long
findrow = Range("B:B").Find("Feature Styles", Range("B1")).Row
findrow2 = Range("B:B").Find("Feature Options", Range("B" & findrow)).Row
For i = findrow To findrow2

    If Range("B" & i).Value = Range("O" & i).Value Then
        Range("C" & i).Value = True
    Else: Range("C" & i).Value = False
    End If
Next i
End Sub

为什么我收到错误的任何想法?

1 个答案:

答案 0 :(得分:0)

如上所述处理错误,它说你没有定义i,所以让我们来定义它。 变化:

Dim findrow As Long, findrow2 As Long

要:

Dim findrow As Long, findrow2 As Long, i as long