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

Forumthread: Checkbox mit Variable ansprechen

Checkbox mit Variable ansprechen
07.09.2015 14:12:42
Psy
Hallo zusammen,
habe eine Excel-Tabelle, in welcher 17 Checkboxen (ActiveX-Steuerelemente) enthalten sind.
Wenn ich eine Checkbox auswähle und darin einen Hacken setze, kommt eine MsgBox mit einer Abfrage, ob ein Diagramm in PowerPoint erstellt werden soll. Dies funktioniert auch.
Jetzt könnte ich dies für alle 17 Checkboxen schreiben.
Um mir unnötige Arbeit zu ersparen, kam ich auf die Idee, alle Checkboxen per Schleife _ anzusprechen.

Sub tt()
Dim i As Integer
For i = 1 To 17
'Checkbox per Variable ansprechen um eine Abfrage zu starten, ob ein Diagramm erstellt werden    _
_
_
soll
If Tabelle1.OLEObjects("CheckBox" & i).Object.Value = True Then
If MsgBox("Möchten Sie ein Diagramm für die Direktion " & Cells(i + 5, 2).Value & "  erstellen?" _
_
_
, vbYesNo, "Frage") = vbNo Then
Tabelle1.OLEObjects("CheckBox" & i).Object.Value = False
Exit For
end if
end sub

Nun zu meiner Frage. Wenn ich oben genannten Code nutze, kann ich zwar damit arbeiten, muss aber das Makro selbstständig starten.
Wenn ich direkt über die Checkbox gehe

Private Sub CheckBox1_Click()
end sub

also einen Hacken setze, wird das Makro direkt ausgeführt.
Gibt es die Möglichkeit, das Makro auszuführen, sobald EINE Checkbox aktiviert wird?
Für jede Unterstützung bedanke ich mich.
Gruß

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Das geht am einfachsten...
07.09.2015 14:59:16
Psy
Hi Case,
vielen Dank für die Unterstützung.
Um ehrlich zu sein, verstehe ich nicht was es mit der Klassenprogrammierung auf sich hat. Habe die Datei heruntergeladen aber das ist doch zu hoch für mich. Versuche mich aber trotzdem darin einzuarbeiten.
Oder ich bin zu faul und ändere den Code 17 mal ab. Mal sehen. :)
Gruß und Danke...

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 14:53:15
Daniel
Hi
wenns möglich ist, Listbox im Multiselect-Modus verwenden.
dann hast du nur ein Steuerelement, unabhängig von der Anzahl der Einträge.
Gruß´Daniel

AW: Checkbox mit Variable ansprechen
07.09.2015 15:01:03
Psy
Hi Daniel,
danke für den Tipp. Leider geht es nicht mit einer Listbox. Mir geht es ja nur darum, das für jede Checkbox eine Direktion im Unternehmen steht und sobald eine ausgewählt wird, sollen die Daten dieser Direktion zusammengefahren werden.
Trotzdem danke für die Hilfe. :)
Gruß

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 15:08:34
Daniel
Hi
ja und?
bei einer Listbox steht halt jeder Listboxeintrag für eine Direktion im Unternehmen.
Warum sollte das nicht funktionieren?
aber auch wenn du mit Checkboxen arbeitest, sollte es eigentlich nicht notwendig sein, für jede Checkbox so einen Code zu schreiben.
beim Arbeiten mit Checkboxen geht man doch eher so vor, dass man erst alle benötigten Checkboxen anhakt, und dann wenn man fertig ist ein Makro startet, welches alle Checkboxen durchgeht, überprüft ob diese angehakt sind und wenn ja, die entsprechenden Aktionen ausführt.
Gruss Daniel

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 15:16:53
Psy
Hi Daniel,
das mit der Listbox ist gar keine schlechte Idee. Werde mal testen, ob so etwas passt.
Danke für die Anregung.
Gruß

AW: Checkbox mit Variable ansprechen
07.09.2015 15:23:06
Daniel
Hi
die eine alternative wäre die angeblich einfache Klassenprogrammierung.
die andere alternative wäre, dass du statt der ActiveX-Checkboxen die Formularfeld-Checkboxen verwendest.
diesen kannst du dann ein Makro aus einem allgemeinen Modul zuweisen (geht über das Kontextmenü, auch für mehrere gleichzeitig), welches dann bei Klick ausgeführt wird.
dieses Makro kann von mehreren Elementen verwendete werden, dh du brauchst nur ein Makro.
im makro kannst du dann über Application.Caller abfragen, welches Element das Makro ausgelöst hat.
(das wäre dann sowas wie "Klassenprogrammierung light")
Gruß Daniel

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 15:36:49
Psy
Hi Daniel,
habe es glaube ich hinbekommen mit der Listbox.
Die erste Prüfung hat ergeben, dass die korrekten Daten übernommen werden. Zuerst einmal vielen Dank für den sehr guten Tipp.
Eine Frage hätte ich noch.
Wenn ich in der Listbox eine Direktion auswähle, dann erscheint bei mir eine MsgBox. Soweit so gut. Nur leider bleibt die Listbox dabei geöffnet und erst wenn ich meine Wahl in der MsgBox (ja oder nein) treffe, wird die Listboxauswahlliste geschlossen. Ist zwar jammern auf hohem Niveau aber ist es möglich, dass sich nach der Wahl der Direktion in der Listbox, die Listboxauswahlliste zuerst schließt und danach die MsgBox erscheint?
Gruß

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 15:46:43
Daniel
Hi
sorry, ich verstehe nicht, was du meinst.
ich halte es eigentlich auch für falsch, sofort bei Klick auf die Listbox ein Makro auszulösen.
Sinnvoller wäre, wenn der Anwender erstmal alle benötigten Direktionen auswählen kann (und ggf auchwieder abwählen) und erst wenn er damit fertig ist, startet er über einen weitern Button ein Makro.
damit würde sich dann auch die Msgbox mit der Sicherheitsabfrage nach jedem Klick erübrigen.
Gruß Daniel

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 15:54:51
Psy
Hi Daniel,
das ist korrekt. Aber es soll immer nur eine Auswertung je Direktion erstellt werden. Wahrscheinlich werde ich dies so lassen, oder über einen CommandButton in Excel soll die Auswertung gestartet werden.
So kann erst die Direktion gewählt werden und erst beim klick auf den CommandButton wird das Makro gestartet.
Und sollte es sinnvoll sein, einmal mehrere Direktionen gleichzeitig auszuwerten, muss ich das Makro umschreiben.
Somit wäre meine Frage beantwortet und ich bedanke mich für die super Hilfe.
Gruß

Anzeige
AW: Checkbox mit Variable ansprechen
07.09.2015 16:02:19
Daniel
Hi
dann wären ja Optionbuttons bzw die Single-Select-Listbox die Mittel deiner Wahl und keine Checkboxen!
Die Single-Select-Listbox lässt sich dann auch einfacher auswerten, weil du den angeklickten Wert mit Listbox1.ListIndex direkt abfragen kannst und keine Schleife brauchst.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Checkboxen in Excel effizient nutzen


Schritt-für-Schritt-Anleitung

Um Checkboxen in Excel zu verwenden und ihre Funktionen zu automatisieren, folge dieser Schritt-für-Schritt-Anleitung:

  1. Checkboxen hinzufügen: Füge 17 ActiveX-Checkboxen in dein Excel-Blatt ein. Du findest diese in den Entwicklertools unter „Einfügen“.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“ und wähle „Einfügen“ > „Modul“.

  4. Makro einfügen: Kopiere und füge den folgenden Code in das Modul ein:

    Sub tt()
        Dim i As Integer
        For i = 1 To 17
            If Tabelle1.OLEObjects("CheckBox" & i).Object.Value = True Then
                If MsgBox("Möchten Sie ein Diagramm für die Direktion " & Cells(i + 5, 2).Value & " erstellen?", vbYesNo, "Frage") = vbNo Then
                    Tabelle1.OLEObjects("CheckBox" & i).Object.Value = False
                    Exit For
                End If
            End If
        Next i
    End Sub
  5. Checkboxen verknüpfen: Gehe zurück zu deinem Excel-Blatt und klicke mit der rechten Maustaste auf jede Checkbox. Wähle „Eigenschaften“ und setze den LinkedCell-Wert auf eine Zelle deiner Wahl.

  6. Makro zuweisen: Klicke erneut mit der rechten Maustaste auf eine Checkbox, wähle „Makro zuweisen“ und wähle dein tt-Makro.


Häufige Fehler und Lösungen

  • Fehler: Makro wird nicht ausgeführt
    Lösung: Stelle sicher, dass du das Makro zu den Checkboxen zugewiesen hast, andernfalls wird es nicht automatisch aktiviert.

  • Fehler: MsgBox erscheint nicht
    Lösung: Überprüfe den Code auf Syntaxfehler und stelle sicher, dass die Checkboxen korrekt aktiviert sind.

  • Fehler: Diagramm wird nicht erstellt
    Lösung: Überprüfe die Logik in deinem Makro und stelle sicher, dass die Zellen, auf die verwiesen wird, die richtigen Daten enthalten.


Alternative Methoden

Wenn die ActiveX-Checkboxen nicht die gewünschte Flexibilität bieten, kannst du folgende Alternativen in Betracht ziehen:

  • Formularfeld-Checkboxen: Diese sind einfacher zu handhaben. Du kannst ihnen ein Makro zuweisen, das über Application.Caller erkennt, welches Element das Makro ausgelöst hat.

  • Listbox im Multi-Select-Modus: Verwende eine Listbox, um mehrere Direktionen gleichzeitig zu wählen. Das reduziert die Anzahl der Steuerelemente und vereinfacht die Verarbeitung.


Praktische Beispiele

  1. Diagrammerstellung: Verwende das oben genannte Makro, um Diagramme basierend auf den ausgewählten Checkboxen in PowerPoint zu erstellen.

  2. Direktionsabfragen: Erstelle einen Dialog, der basierend auf den aktivierten Checkboxen verschiedene Daten zusammenstellt.


Tipps für Profis

  • Nutze Application.Caller: Dies hilft dir, das Makro zu optimieren, da du nur einen Code benötigst, um mehrere Checkboxen zu verwalten.

  • Vermeide redundanten Code: Halte deinen Code sauber, indem du Schleifen und Funktionen verwendest, um wiederholte Aufgaben zu automatisieren.

  • Teste regelmäßig: Führe dein Makro nach jeder Änderung aus, um sicherzustellen, dass alles reibungslos funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur eine Checkbox gleichzeitig ausgewählt werden kann?
Verwende OptionButtons oder eine Single-Select-Listbox, um sicherzustellen, dass nur eine Auswahl möglich ist.

2. Wie kann ich die Listbox nach einer Auswahl schließen?
Implementiere die Logik, die die Listbox schließt, bevor die MsgBox erscheint, um eine bessere Benutzererfahrung zu gewährleisten.

3. Welche Excel-Version benötige ich für ActiveX-Checkboxen?
ActiveX-Steuerelemente sind in Excel 2007 und später verfügbar. Stelle sicher, dass die Entwicklertools aktiviert sind.

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