Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Checkbox per VBA eine _Click-Prozedur zuweisen

Checkbox per VBA eine _Click-Prozedur zuweisen
12.01.2016 19:01:05
Marcus
Hallo an Alle,
ich hätte da mal wieder gerne ein Problem:
Ich erstelle aus einem Eingabe-UserForm heraus beim Speichern der Daten am Ende der gleichen _ Zeile eine Checkbox. Der Name der Checkbox wird dabei festgelegt mit

oShape.Name = "checkbox_" & i

i ist eine Variable und entspricht der Zeile.
Wie kann ich der Checkbox nun auch gleich mitteilen, dass sie bei checkbox_i_click() eine sub aufrufen soll?
Vielen Dank für Eure Unterstützung!
Gruß Marcus

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
.OnAction = "DeineSub" o.T.
12.01.2016 19:03:24
Sepp
Gruß Sepp

AW: .OnAction = "DeineSub" o.T.
12.01.2016 19:51:36
Marcus
Hallo Sepp,
vielen Dank!
Was meinst Du mit o.T.?
Gruß Marcus

Die nachricht ist ohne Text! o.T.
12.01.2016 19:58:39
Sepp
Gruß Sepp

Anzeige
ich hätte da mal wieder gerne ein Problem: ?..
12.01.2016 19:09:33
Helmut
Hallo,
warum willst Du unbedingt ein Problem ?
;-)
:-)
LG
Helmut

AW: ich hätte da mal wieder gerne ein Problem:
12.01.2016 19:42:11
Marcus
Ups, da fehlt noch ein bisschen was... ein Problem gelöst:
Sorry

Viele Checkboxes, viele Probleme
12.01.2016 19:21:46
RPP63
Hi!
Neben dem Speicherplatz kommen die anderen Probleme, wenn Du mal eine Zeile löscht oder einfügst.
Schon mal über eine Alternative nachgedacht?
https://www.herber.de/bbs/user/102742.xlsm
Gruß Ralf

Anzeige
AW: Viele Checkboxes, viele Probleme
12.01.2016 19:49:04
Marcus
Hallo Ralf,
das ist ein guter Ratschlag und die Datei werde ich mir mal abspeichern, aber in meiner Datei werden definitiv keine Zeilen gelöscht werden und im weiteren wird nach erfolgreichem Durchlaufen der Prozedur die Checkbox wieder gelöscht ;-)
Gruß Marcus

AW: Checkbox per VBA eine _Click-Prozedur zuweisen
12.01.2016 20:21:24
Marcus
Hallo nochmal,
eine weitere Frage hätte ich noch:
Wie kann ich der nachfolgenden Sub mitteilen welche Checkbox sie aufgerufen hat?
Danke und Gruß
Marcus

Anzeige
Ich dachte, Du hast nur eine …
12.01.2016 20:31:46
RPP63
… die Du nach der Prozedur wieder löscht? ;-)
Beim Formularsteuerelement folgendes Makro zuweisen:
Sub WerWarEs()
MsgBox Application.Caller
End Sub
Gruß Ralf

AW: Ich dachte, Du hast nur eine …
12.01.2016 22:45:24
Marcus
Hallo Ralf,
ich erzeuge diese Checkboxen beim Abspeichern von Formulardaten. Der User soll dann die Checkbox auswählen, um den Datensatz in einem weiteren Formular zu vervollständigen. Wenn alle Daten korrekt und vollständig eingegeben sind und gespeichert wurden, wird die Checkbox wieder gelöscht.
Mit dem Aufruf
MsgBox Application.Caller

bekomme ich den Namen der Checkbox. Sehr gut, danke!
Aber wie kann ich dann auf den Namen zugreifen und weiter verarbeiten?
Wenn ich beim Event "Private Sub UserForm_Initialize()" versuche
Dim caller As Variant
caller = Application.caller
MsgBox caller

bekomme ich einen Laufzeitfehler 13, Typen unverträglich...
Gruß Marcus

Anzeige
AW: Ich dachte, Du hast nur eine …
12.01.2016 23:08:30
Marcus
Ok, mit
caller = ActiveSheet.Shapes(Application.caller).TopLeftCell.Row
MsgBox caller

bekomme ich die Zeile, das reicht mir ja schon um weiter zu machen.
Vielen Dank an alle die geholfen haben!
Gruß Marcus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Checkboxen in Excel mit VBA: Click-Prozeduren zuweisen


Schritt-für-Schritt-Anleitung

  1. Checkbox erstellen: Um eine Checkbox in Excel mit VBA zu erstellen, kannst du den folgenden Code verwenden:

    Dim oShape As Shape
    Dim i As Integer
    i = 1 ' Beispiel für die Zeile, in der die Checkbox erstellt wird
    Set oShape = ActiveSheet.Shapes.AddFormControl(xlCheckBox, 100, 100, 100, 20)
    oShape.Name = "checkbox_" & i
  2. Click-Prozedur zuweisen: Um eine Click-Prozedur für die Checkbox zu definieren, kannst du die .OnAction-Eigenschaft nutzen:

    oShape.OnAction = "checkbox_" & i & "_click"
  3. Click-Prozedur implementieren: Definiere die Prozedur, die bei einem Click auf die Checkbox aufgerufen wird:

    Sub checkbox_1_click()
       MsgBox "Checkbox 1 wurde geklickt!"
    End Sub
  4. Checkbox löschen: Wenn du die Checkbox nach Verwendung wieder löschen möchtest, kannst du dies mit folgendem Code tun:

    ActiveSheet.Shapes("checkbox_1").Delete

Häufige Fehler und Lösungen

  • Fehler beim Zugriff auf die Checkbox: Wenn du beim Zugriff auf die Checkbox einen Laufzeitfehler erhältst, überprüfe den Namen der Checkbox:

    MsgBox Application.Caller

    Dies zeigt dir den Namen der Checkbox, die das Ereignis ausgelöst hat.

  • Typen unverträglich: Wenn du einen Laufzeitfehler 13 erhältst, stelle sicher, dass du die Variable korrekt deklarierst. Beispielsweise:

    Dim caller As String
    caller = Application.Caller

Alternative Methoden

Falls du eine Excel Checkbox Alternative suchst, kannst du auch ActiveX-Steuerelemente verwenden. Diese bieten mehr Anpassungsmöglichkeiten. Hier ist ein Beispiel, wie du eine ActiveX-Checkbox erstellst und ihr eine Prozedur zuweist:

  1. ActiveX-Checkbox hinzufügen: Füge in der Entwicklertools-Registerkarte eine ActiveX-Checkbox hinzu.
  2. Prozedur zuweisen:
    Private Sub CheckBox1_Click()
       MsgBox "ActiveX Checkbox wurde geklickt!"
    End Sub

Praktische Beispiele

Hier sind zwei praktische Beispiele:

  1. Checkbox zur Dateneingabe: Du kannst Checkboxen verwenden, um Benutzereingaben zu bestätigen. Wenn der Benutzer die Checkbox auswählt, wird eine Nachricht angezeigt, dass die Eingabe erfolgreich war.

  2. Checkboxen dynamisch erstellen: Du kannst eine Schleife verwenden, um mehrere Checkboxen zu erstellen:

    Dim j As Integer
    For j = 1 To 5
       Set oShape = ActiveSheet.Shapes.AddFormControl(xlCheckBox, 100, 100 + (j * 25), 100, 20)
       oShape.Name = "checkbox_" & j
       oShape.OnAction = "checkbox_" & j & "_click"
    Next j

Tipps für Profis

  • Verwende Namenskonventionen: Halte dich an ein konsistentes Namensschema für Checkboxen, um den Überblick zu behalten.
  • Fehlerbehandlung implementieren: Nutze On Error Resume Next, um unerwartete Fehler zu vermeiden, insbesondere beim Zugreifen auf Checkboxen.
  • Testen: Teste regelmäßig deine VBA-Programme, um sicherzustellen, dass alle Click-Prozeduren wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich alle Checkboxen auf einmal löschen?
Du kannst alle Checkboxen auf dem Arbeitsblatt mit folgendem Code löschen:

Dim shp As Shape
For Each shp In ActiveSheet.Shapes
    If shp.Type = msoFormControl Then
        If shp.FormControlType = xlCheckBox Then
            shp.Delete
        End If
    End If
Next shp

2. Kann ich Checkboxen in einer UserForm verwenden?
Ja, du kannst Checkboxen auch in einer UserForm verwenden. Hierbei kannst du die gleiche Logik wie bei den Form-Steuerelementen anwenden, um Click-Prozeduren zuzuweisen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige