VBA-Problematik mit CheckBox und Programmablauf
#1
Guten Morgen Leute,
Ich hab ein Programmcode für mein Checkbox 18 geschrieben. Bei Aktivierung (Chekcbox18 = True) sollen alle Zeilen, die in Spalte 13 (M) keine 1 haben versteckt werden. Danach wird geprüft ob, die anderen Checkboxen, die existieren, ggf. auf True gesetzt werden.
Werden diese nun auf True gesetzt starten sie ihr Programmpart. In den Checkboxen findet selbst eine Auswertung einer Spalte statt, dadurch fliegen wieder einige Zeilen bei den Spalte 13 = 1 ist wieder auf Hidden=False.
Gibt es eine Möglichkeit mit der ich deaktivieren kann, das beim True setzen in meiner Checkbox18, der Part nicht ausgeführt wird.
Oder sollte ich das Problem mit einer Variablen lösen, die ich Übertragen kann und die beim Auslösen der CheckBox18 eine Wert setzt, den ich dann mit If-Abfragen einarbeite ?
Vielen Dank im Voraus.
P.S.: Ich hoffe es ist verständlich beschrieben =)

Hier der Programmcode CheckBox1:
Code:
Private Sub CheckBox18_Click()
Dim zaehlehoch17 As Integer
Dim leerezahel17 As Integer
zaehlehoch17 = 2

sprungmarkeCheckBox18:

If zaehlehoch17 < 200 Then
   If CheckBox18 = True Then
       If Worksheets("Sheet1").Cells(zaehlehoch17, 13) = 1 Then
       Rows(zaehlehoch17).Hidden = True
       zaehlehoch17 = zaehlehoch17 + 1
       GoTo sprungmarkeCheckBox18
       Else
       Rows(zaehlehoch17).Hidden = False
       zaehlehoch17 = zaehlehoch17 + 1
       GoTo sprungmarkeCheckBox18
       End If
   Else
   leerezahl17 = leerezahl17 + 1
   GoTo sprungmarkeCheckBox18
   End If
End If

Dim zaehlehoch18 As Integer
zaehlehoch18 = 2

Sprungmarke181:

If zaehlehoch18 < 200 Then
           If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 1 Then
           CheckBox1 = True
           zaehlehoch18 = zaehlehoch18 + 1
           GoTo Sprungmarke181
           Else
               If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 2 Then
               CheckBox2 = True
               zaehlehoch18 = zaehlehoch18 + 1
               GoTo Sprungmarke181
               Else
                   If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 3 Then
                   CheckBox3 = True
                   zaehlehoch18 = zaehlehoch18 + 1
                   GoTo Sprungmarke181
                   Else
                       If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 4 Then
                       CheckBox4 = True
                       zaehlehoch18 = zaehlehoch18 + 1
                       GoTo Sprungmarke181
                       Else
                           If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 5 Then
                           CheckBox5 = True
                           zaehlehoch18 = zaehlehoch18 + 1
                           GoTo Sprungmarke181
                           Else
                               If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 6 Then
                               CheckBox6 = True
                               zaehlehoch18 = zaehlehoch18 + 1
                               GoTo Sprungmarke181
                               Else
                                   If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 7 Then
                                   CheckBox7 = True
                                   zaehlehoch18 = zaehlehoch18 + 1
                                   GoTo Sprungmarke181
                                   Else
                                       If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 8 Then
                                       CheckBox8 = True
                                       zaehlehoch18 = zaehlehoch18 + 1
                                       GoTo Sprungmarke181
                                       Else
                                           If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 9 Then
                                           CheckBox9 = True
                                           zaehlehoch18 = zaehlehoch18 + 1
                                           GoTo Sprungmarke181
                                           Else
                                               If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 10 Then
                                               CheckBox10 = True
                                               zaehlehoch18 = zaehlehoch18 + 1
                                               GoTo Sprungmarke181
                                               Else
                                                   If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 11 Then
                                                   CheckBox11 = True
                                                   zaehlehoch18 = zaehlehoch18 + 1
                                                   GoTo Sprungmarke181
                                                   Else
                                                       If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 12 Then
                                                       CheckBox12 = True
                                                       zaehlehoch18 = zaehlehoch18 + 1
                                                       GoTo Sprungmarke181
                                                       Else
                                                           If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 13 Then
                                                           CheckBox13 = True
                                                           zaehlehoch18 = zaehlehoch18 + 1
                                                           GoTo Sprungmarke181
                                                           Else
                                                               If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 14 Then
                                                               CheckBox14 = True
                                                               zaehlehoch18 = zaehlehoch18 + 1
                                                               GoTo Sprungmarke181
                                                               Else
                                                                   If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 15 Then
                                                                   CheckBox15 = True
                                                                   zaehlehoch18 = zaehlehoch18 + 1
                                                                   GoTo Sprungmarke181
                                                                   Else
                                                                       If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 16 Then
                                                                       CheckBox16 = True
                                                                       zaehlehoch18 = zaehlehoch18 + 1
                                                                       GoTo Sprungmarke181
                                                                       Else
                                                                           If Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value = 17 Then
                                                                           CheckBox17 = True
                                                                           zaehlehoch18 = zaehlehoch18 + 1
                                                                           GoTo Sprungmarke181
                                                                           Else
                                                                           zaehlehoch18 = zaehlehoch18 + 1
                                                                           GoTo Sprungmarke181
                                                                           End If
                                                                       End If
                                                                   End If
                                                               End If
                                                           End If
                                                       End If
                                                   End If
                                               End If
                                           End If
                                       End If
                                   End If
                               End If
                           End If
                       End If
                   End If
               End If
           End If
Else
leerezahl17 = leerezahl17 + 1
End If

End Sub
Top
#2
Hallo,

wo sind deine Checkboxen? In einer Userform oder einer Tabelle? Und wenn Tabelle: Sind die Checkboxen aus der Formularleiste oder aus der Steuerelementeleiste?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Steffan,
Meine Checkboxen sind auf der UserForm.
Ich hab meine Checkboxen in "Private Sub CheckBox17_Click()" programmiert. Vielleicht liegt dort der Fehler
Gruß moryboy
Top
#4
Hallo,

nimm dazu eine Modulvariable und prüfe in den jeweiligen Prozeduren auf Wahr (siehe Code).

Code:
Private bolSchalter As Boolean

Private Sub CheckBox17_Click()
   If bolSchalter Then Exit Sub
   'dein Code

End Sub


Private Sub CheckBox18_Click()
Dim zaehlehoch17 As Integer
Dim leerezahel17 As Integer
Dim zaehlehoch18 As Integer

Dim lngC As Long

'Modulvariable auf True setzen
bolSchalter = True
zaehlehoch17 = 2

sprungmarkeCheckBox18:

If zaehlehoch17 < 200 Then
   If CheckBox18 = True Then
       If Worksheets("Sheet1").Cells(zaehlehoch17, 13) = 1 Then
       Rows(zaehlehoch17).Hidden = True
       zaehlehoch17 = zaehlehoch17 + 1
       GoTo sprungmarkeCheckBox18
       Else
       Rows(zaehlehoch17).Hidden = False
       zaehlehoch17 = zaehlehoch17 + 1
       GoTo sprungmarkeCheckBox18
       End If
   Else
   leerezahl17 = leerezahl17 + 1
   GoTo sprungmarkeCheckBox18
   End If
End If

zaehlehoch18 = 2


For lngC = 2 To 199
   Select Case Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value
      Case 1 To 17
         Me.Controls("Checkbox" & Worksheets("Sheet1").Cells(zaehlehoch18, 12).Value) = True
   End Select
Next lngC

'If zaehlehoch18 < 200 Then
'Else
'leerezahl17 = leerezahl17 + 1
'End If

bolSchalter = False
End Sub

Ich habe eine Sprungmarke entfernt und den Code ein wenig vereinfacht. Teste es mal.
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste