AW: selbes Makro für meherer Checkboxen
05.03.2014 09:52:56
Oberschlumpf
Hi ?
Deine Frage ist mit einem klaren JEIN beantwortbar.
Und zwar:
Zitat:
"...ist es mühsam jeder einzelnen Checkbox einen Code zuzuweisen..."
Stell dir vor, du hast eine Checkbox2. Da würde für das Click-Ereignis dieser code stehen:
Private Sub CheckBox2_Click()
End Sub
Was denkst du, wird passieren, wenn du für Checkbox2 den Haken setzt oder entfernst?
Es würde NIX passieren, da ja, wie du es gern hättest, gar kein Code vorhanden ist.
Bedeutet, du musst also tatsächlich für jede Checkbox für das Click-Ereignis einen Code schreiben.
Und trotzdem geht es einfacher - du musst 1x den Hauptcode schreiben, der Zeilen ein/ausblendet und für die Click-Ereignisse nur jeweils 1 Codezeile schreiben, die den Hauptcode mit Hilfe von Variablen aufruft.
Und zwar so...
schreib in ein allgemeines Modul diesen Code:
Sub sbChkBox(ByVal chkboxname As String, zeile As Integer)
ActiveSheet.Unprotect
With Sheets(1)
If .OLEObjects(chkboxname).Object.Value = False Then
.Rows(zeile).EntireRow.Hidden = False
Else
.Rows(zeile).EntireRow.Hidden = True
End If
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Nun schreib für das Click-Ereignis von Checkbox1 diesen Code:
Private Sub CheckBox1_Click()
sbChkBox CheckBox1.Name, 6
End Sub
und für Checkbox2 diesen Code:
Private Sub CheckBox2_Click()
sbChkBox CheckBox2.Name, 7
End Sub
...und für alle weiteren Checkboxes den entsprechenden Code.
Der Hauptcode, den ich sbChkBox genannt habe, wird also in jedem Click-Ereignis der Checkboxen aufgerufen.
Damit der Hauptcode immer das Richtige macht, muss er "wissen", welche Checkbox du angeklickt hast, und welche Zeile ausgeblendet oder angezeigt werden soll.
Aus dem Grund steht hinter dem Aufruf von sbChkBox der jeweilige Name der Checkbox und die Zeile, die ausgeblendet oder angezeigt werden soll.
Wenn für Checkbox2 nicht Zeile 7 gemeint ist, musst du den Code natürlich anpassen.
Hilfts?
Wenn nicht, zeig uns bitte eine Bsp-Datei mit Bsp-Daten und allem VBA-Code, der wichtig ist, dein Problem zu verstehen.
Ciao
Thorsten
P.S.
Du hast leider nicht verraten, ob die Checkboxen in einer Tabelle stehen oder ob du ein Userform mit Checkboxen verwendest.
Ich gehe davon aus, dass die Checkboxen in einer Tabelle stehen.
Wenn das falsch ist, ist auf jeden Fall eine Bsp-Datei erforderlich - denn ich hab keine Lust, dein Userform neu zu erstellen...du hast es ja schon ;-)