2017-10-03 1 views
0

Dies geht von einem vorherigen Thread aus, in dem Code ausgeführt werden soll, wenn ein beliebiges Kontrollkästchen angeklickt wird. Jsotola war so freundlich, mir zu helfen, das auslösende Ereignis zu definieren. Hier ist ein Link zu diesem Thema: Event triggered by ANY checkbox clickKlasse Modulcode für eine Schleife, die ausgeführt wird, wenn ein Kontrollkästchen angeklickt wird

Jetzt versuche ich, die ChkBoxGroup_Click() Sub im Klassenmodul an spezifischere Bedürfnisse anzupassen. Ich habe den Code in einer separaten Arbeitsmappe als eigenständiges Sub getestet, das ich manuell mit F5 ausführen kann, was genau so funktioniert, wie ich es mir erhofft hatte. Da ich möchte, dass es mit Checkbox-Klicks ausgeführt wird, dachte ich, ich könnte es einfach in das Klassenmodul einfügen, aber ich bekomme einen Fehler, von dem ich hoffe, dass jemand helfen könnte.

Hier ist, was ich in einem Klassenmodul mit dem Namen: „chkclass“ Option Explicit

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 

Wenn ich ein Kontrollkästchen klicken, bekomme ich ein Fehlerfeld mit der Meldung „Fehler kompilieren: Variable nicht definiert“. es zeigt auch die „i“ in dieser Zeile:

For i = findrow To findrow2  

Es funktioniert großartig in meinem anderen Blatt als eigenständiges Unter, der wie folgt lautet:

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 

Irgendwelche Ideen, warum ich erhalte die Error?

Antwort

0

Behandeln Sie den Fehler, wie es heißt, es heißt, Sie haben i nicht definiert, also definieren wir es. Wechsel:

Dim findrow As Long, findrow2 As Long 

An:

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

Beautiful! Rookie bewegen! (Ich bin ein Anfänger). Vielen Dank! Funktioniert super! – csmith222

+0

Nur ein bisschen Hintergrund zum "Warum". Sie würden damit in einem Modul normalerweise durchkommen, Standardprozedur ist, wenn Sie eine Variable verwenden, die Sie nicht definiert haben, Excel wird es für Sie tun und eine Variante erstellen, um damit umzugehen (Dieses Verhalten wird durch das Setzen der Option explizit oben gestoppt des Moduls, das Sie auf dem Klassenmodul zu haben scheinen). – Zerk

+0

Wusste das nicht! Mehr und mehr über dieses Zeug lernen, dank der Freundlichkeit von Menschen wie dir! Vielen Dank – csmith222

Verwandte Themen