Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Check Box mit 2 Makros verbinden

Forumthread: Check Box mit 2 Makros verbinden

Check Box mit 2 Makros verbinden
Jenny
Hi Ihr,
ich habe noch eine Frage an die Ex(cel)perten: :-)
Ich habe ein Tabellenblatt mit einer Checkbox ("Check Box 23"), der ich ein Makro zugewiesen habe.
Das klappt soweit gut wenn ich die Checkbox markiere, d.h. den Haken setze und das Makro läuft wie gewünscht.
Wie schaffe ich es, dass beim erneuten anklicken, d.h. beim Entfernen des Hakens das gleiche Makro einen Schritt ändert ? Muss ich dazu im Makro eine If Then Schleife einbauen und wenn ja, worauf beziehe ich mich hier ?
Momentan schreibt das Makro beim Setzen des Hakens in der Checkbox den Wert 1 in P3.
Wenn der Haken in der Checkbox entfernt wird, soll diese 1 wieder entfernt werden bzw. "" in P3 eingetragen werden.
LG und vielen Dank im Voraus für jeden Tipp,
Jenny
Anzeige
AW: Check Box mit 2 Makros verbinden
10.04.2012 11:07:27
Rudi
Hallo,
Schema:
Sub xxxx()
If Shapes("Check Box 1").DrawingObject.Value = 1 Then
Range("A1") = "x"
Else
Range("A1") = ""
End If
End Sub

Gruß
Rudi
AW: Check Box mit 2 Makros verbinden
10.04.2012 11:22:50
Jenny
Hallo Rudi,
vielen Dank !
Ich habe es wie unten probiert, hier scheint sich VBA aber an dem Code-Teil "Shapes" zu stoßen, da es nicht funktioniert und im Debugger an diese Stelle springt.
Habe ich etwas übersehen ?
If Shapes("Check Box 23").DrawingObject.Value = 1 Then
Range("P3").FormulaR1C1 = "1"
Else
Range("P3").FormulaR1C1 = ""
End If
LG
Jenny
Anzeige
AW: Check Box mit 2 Makros verbinden
10.04.2012 11:26:39
Rudi
Hallo,
steht der Code in einem normalen Modul? Dann das Worksheet mit angeben.
z.B. If ActiveSheet.Shapes(.....
Gruß
Rudi
AW: Check Box mit 2 Makros verbinden
10.04.2012 12:21:37
Jenny
Hallo Rudi,
vielen Dank !
Auch das klappt (neben dem Vorschlag von Matthias) bestens - mit Deinem Tipp ließ es sich auch ganz leicht in mein Makro integrieren. :-)
LG und danke nochmal - einen schönen Nachmittag,
Jenny
Anzeige
AW: Check Box mit 2 Makros verbinden
10.04.2012 12:27:38
Jenny
Hallo Rudi,
ich habe noch eine kleine Frage an Dich - nur zum Verständnis: :-)
Wann reicht denn allgemein der Code-Teil Range("XX") = "x" und wann muss man nach der Klammer noch das .FormulaR1C1 ergänzen ?
LG
Jenny
FormulaR1C1
10.04.2012 13:31:26
Rudi
Hallo,
.FormulaR1C1 nur, wenn du eine Formel im Z1S1-Format eintragen willst. Bei Werten einfach so zuweisen, da dann die Default-Eigenschaft VALUE gesetzt wird.
Siehe auch Eigenschaften des Range-Objekts in der Hilfe.
Gruß
Rudi
Anzeige
AW: FormulaR1C1
10.04.2012 13:34:32
Jenny
Hallo Rudi,
vielen Dank - das ist super !
Jetzt verstehe ich es endlich. ;-)
LG
Jenny
CheckBox23_Click() reicht da schon
10.04.2012 11:14:38
Matthias
Hallo
Checkbox (ActiveX-Steuerelement)
Private Sub CheckBox23_Click()
Range("P3") = IIf(Tabelle1.CheckBox23, 3, "")
End Sub
https://www.herber.de/bbs/user/79719.xls
Gruß Matthias
Anzeige
AW: CheckBox23_Click() reicht da schon
10.04.2012 12:20:17
Jenny
Hallo Matthias,
vielen Dank dafür - das es auch so einfach geht, hätte ich nicht gedacht. :-)
Das klappt bestens !
LG und einen schönen Nachmittag noch,
Jenny
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:10:55
Jenny
Hallo Matthias,
beim Umsetzen deines Vorschlages hat sich bei mir noch ein kleines Problem ergeben:
Da die Bezeichnung meiner Checkbox von Excel aus Leerzeichen enthält, klappt es mit dem Code von Dir nicht.
Die korrekte Bezeichnung der Checkbox ist "Check Box 23".
Ich habe es wie folgt probiert:
Private Sub CheckBox23_Click()
Range("P3") = IIf(ActiveSheet.Shapes("Check Box 23"), 1, "")
End Sub
Hast Du eine Idee dazu ? :-)
LG
Jenny
Anzeige
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:18:14
Rudi
Hallo,
du hast kein ActiveX- sondern ein Formular-Steuerelement. Formular-Steuerelemente kennen keine Ereignisprozeduren.
Gruß
Rudi
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:26:40
Jenny
Ah - oh, sorry, Anfänger-Fehler !
Wie kann ich dem Steuerelement dann etwas ähnliches zuweisen ?
Ich bräuchte einfach nur, dass beim Aktivieren, d.h. Haken anzeigen eine 1 in P3 geschrieben wird und beim Deaktivieren nichts, also "".
Das muss doch irgendwie gehen ? :-)
LG
Jenny
Anzeige
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:29:59
Jenny
Hallo Rudi,
ich hab die Lösung gefunden - danke und sorry nochmal ! :-)
ActiveSheet.Unprotect "XXX"
If Range("P3") = 1 Then
Range("P3") = ""
Else
Range("P3") = 1
End If
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="XXX"
LG
Jenny
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:34:29
Reinhard
Hallo Jenny,
With ActiveSheet
.Unprotect "XXX"
.Range("P3") = IIf(.Range("P3") = 1, "", 1)
.Protect UserInterfaceOnly:=True, Password:="XXX"
End With

Gruß
Reinhard
Anzeige
AW: CheckBox23_Click() reicht da schon
10.04.2012 13:44:31
Jenny
Hallo Reinhard,
auch das klappt super - vielen Dank ! :-)
LG und einen schönen Nachmittag,
Jenny
;
Anzeige
Anzeige

Infobox / Tutorial

Check Box mit Makros verbinden in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues oder öffne ein bestehendes Arbeitsblatt.

  2. Füge ein Kontrollkästchen hinzu:

    • Gehe zu „Entwicklertools“ > „Einfügen“ > wähle ein Formular-Kontrollkästchen aus und platziere es im Arbeitsblatt.
  3. Makro erstellen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Erstelle ein neues Modul über „Einfügen“ > „Modul“.
    • Füge folgenden Code ein:
    Sub Kontrollkaestchen()
       With ActiveSheet
           .Unprotect "XXX"  ' Optional: Passwortschutz aufheben
           If .Shapes("Check Box 23").DrawingObject.Value = 1 Then
               .Range("P3").Value = 1
           Else
               .Range("P3").Value = ""
           End If
           .Protect UserInterfaceOnly:=True, Password:="XXX"  ' Optional: Passwortschutz wieder aktivieren
       End With
    End Sub
  4. Makro dem Kontrollkästchen zuweisen:

    • Rechtsklicke auf das Kontrollkästchen und wähle „Makro zuweisen“.
    • Wähle das zuvor erstellte Makro „Kontrollkaestchen“ aus.
  5. Teste das Kontrollkästchen, indem du es anklickst. Der Wert in P3 sollte entsprechend aktualisiert werden.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“

    • Überprüfe den Namen des Kontrollkästchens. Nutze die Bezeichnung „Check Box 23“, wie im Code angegeben.
  • Fehler: „Ereignisprozeduren nicht verfügbar“

    • Stelle sicher, dass du ein Formular-Kontrollkästchen und kein ActiveX-Kontrollkästchen verwendest. ActiveX-Kontrollkästchen benötigen eine andere Implementierung.

Alternative Methoden

Eine alternative Methode zur Verwendung von Excel-Kontrollkästchen ist die Verwendung von ActiveX-Steuerelementen. Hier ist ein einfaches Beispiel:

Private Sub CheckBox23_Click()
    Range("P3").Value = IIf(CheckBox23.Value, 1, "")
End Sub

Diese Methode ist jedoch nur für ActiveX-Kontrollkästchen geeignet und funktioniert nicht für Formular-Kontrollkästchen.


Praktische Beispiele

Angenommen, du möchtest, dass beim Aktivieren des Kontrollkästchens ein Wert in eine andere Zelle geschrieben wird. Hier ist ein Beispiel, das den Wert 3 in Zelle Q3 einträgt, wenn das Kontrollkästchen aktiviert ist:

Sub Kontrollkaestchen()
    With ActiveSheet
        .Unprotect "XXX"
        If .Shapes("Check Box 23").DrawingObject.Value = 1 Then
            .Range("Q3").Value = 3
        Else
            .Range("Q3").Value = ""
        End If
        .Protect UserInterfaceOnly:=True, Password:="XXX"
    End With
End Sub

Tipps für Profis

  • Code-Optimierung: Nutze With-Blöcke, um wiederholte Verweise auf das ActiveSheet zu vermeiden und den Code übersichtlicher zu gestalten.
  • Passwortschutz: Wenn du das Arbeitsblatt schützt, stelle sicher, dass du das Passwort sicher aufbewahrst.
  • Debugging: Verwende Debug.Print im Code, um Werte während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Kontrollkästchen in einem Makro kombinieren?
Du kannst mehrere If-Bedingungen innerhalb deines Makros verwenden, um verschiedene Kontrollkästchen zu verarbeiten.

2. Warum funktioniert mein Makro nicht, wenn ich das Kontrollkästchen klicke?
Überprüfe, ob das Makro korrekt zugewiesen ist und ob es sich um das richtige Kontrollkästchen handelt. Achte auch darauf, dass der Code in einem Modul und nicht in einer Arbeitsblatt- oder UserForm-Klasse steht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige