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

Checkbox in einem Modul abfragen

Forumthread: Checkbox in einem Modul abfragen

Checkbox in einem Modul abfragen
09.05.2018 19:20:28
Barbaraa
Hallo
ich würde gerne aus einem Modul heraus feststellen, ob eine bestimmte Checkbox gesetzt ist. Was aber in diesem Zusammenhang nicht geht.
Set wDatenblatt = ThisWorkbook.Sheets("Datenblatt")
With wDatenblatt
a = .CheckBox_Kaso.Value 'macht Fehlermeldung
End With
a = Tabelle3.CheckBox_Kaso.Value 'das funktioniert
Warum funktioniert das eine, und das andere nicht?
Im Überwachungsfenster wird bei "wDatenblatt" das "CheckBox_Kaso" angezeigt.
LG,
Barbara
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox in einem Modul abfragen
09.05.2018 19:29:21
Hajo_Zi
Hallo Barbara,
einmal ist es der Name der auf dem Register steht und einmal der inerne Name.
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
Tabellenname stimmt nicht
09.05.2018 20:49:36
Robert
Hallo Barbara,
in Deinem Code schreibst Du
ThisWorkbook.Sheets("Datenblatt")
Im Überwachungsfenster schreibst Du von "wDatenblatt". Wenn das Tabellenblatt "wDatenblatt" heißt, kann der erste Teil Deines Codes nicht funktionieren.
Gruß
Robert
Anzeige
AW: Tabellenname stimmt nicht
09.05.2018 22:13:36
Barbaraa
Das Sheet heisst "Datenblatt" und ist im Makro mit
Set wDatenblatt = ThisWorkbook.Sheets("Datenblatt")
der Variablen "wDatenblatt" zugewiesen, welche zuvor mit
Dim wDatenblatt As Worksheet
deklariert wurde. Beides sind Worksheets.
Also daran kann es nicht liegen.
Aber vielleicht hat Hajo recht, und ich sollte wirklich eine Datei hochladen.
Aber nicht mehr heute (gähn).
Danke jedenfalls.
LG, B
Anzeige
Tabellenname stimmt doch
09.05.2018 23:13:24
Robert
Hallo Barbara,
stimmt. Das hätte ich eigentlich an Deinem Code auch ersehen können. Sorry.
Ich habe noch etwas rum probiert. Du kannst über die Variable für das Tabellenblatt wie folgt auf den Wert der Checkbox zugreifen:
With wDatenblatt
a = .OLEObjects("CheckBox_Kaso").Object.Value
End With

Jetzt frage mich aber bitte nicht, wieso das so funktioniert und nicht wie von Dir versucht. Logischer wäre eigentlich Deine Version.
Gruß
Robert
Anzeige
AW: Checkbox in einem Modul abfragen
10.05.2018 11:11:52
Nepumuk
Hallo,
weil deine Variable ein "Standardtabellenblatt" darstellt und so eines hat keine Checkbox.
Gruß
Nepumuk
;
Anzeige
Anzeige

Infobox / Tutorial

Checkbox in einem Modul abfragen


Schritt-für-Schritt-Anleitung

Um eine Checkbox in einem Excel VBA-Modul abzufragen, kannst du folgende Schritte befolgen:

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle Einfügen > Modul.

  3. Deklariere das Arbeitsblatt: Verwende den folgenden Code, um das Arbeitsblatt zu definieren:

    Dim wDatenblatt As Worksheet
    Set wDatenblatt = ThisWorkbook.Sheets("Datenblatt")
  4. Zugriff auf die Checkbox: Um den Wert der Checkbox abzufragen, verwende den folgenden Code:

    Dim a As Boolean
    a = wDatenblatt.OLEObjects("CheckBox_Kaso").Object.Value
  5. Fehlerbehandlung: Achte darauf, dass der Name der Checkbox korrekt ist. Ansonsten kann der Code nicht funktionieren.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“: Stelle sicher, dass der Name der Checkbox korrekt ist. Im Forum wurde erwähnt, dass die Verwendung des internen Namens der Checkbox notwendig ist.
  • Fehler bei der Deklaration: Wenn du versuchst, auf die Checkbox direkt über Set wDatenblatt = ThisWorkbook.Sheets("Datenblatt") zuzugreifen, während die Checkbox in einem anderen Kontext definiert ist, wird ein Fehler auftreten. Verwende stattdessen die OLEObjects-Eigenschaft, um auf die Checkbox zuzugreifen.

Alternative Methoden

Eine alternative Methode zur Abfrage einer Checkbox ist die Verwendung der FormControls anstelle von OLEObjects. Hier ist ein Beispiel, wie du das machen kannst:

Dim a As Boolean
a = wDatenblatt.CheckBoxes("CheckBox_Kaso").Value

Diese Methode ist besonders nützlich, wenn du mit FormControls arbeitest, anstatt die VBA-Checkbox zu verwenden.


Praktische Beispiele

Hier ein einfaches Beispiel, um den Wert einer Checkbox abzufragen und eine Nachricht anzuzeigen:

Sub CheckCheckbox()
    Dim wDatenblatt As Worksheet
    Set wDatenblatt = ThisWorkbook.Sheets("Datenblatt")

    If wDatenblatt.OLEObjects("CheckBox_Kaso").Object.Value = True Then
        MsgBox "Die Checkbox ist gesetzt."
    Else
        MsgBox "Die Checkbox ist nicht gesetzt."
    End If
End Sub

Tipps für Profis

  • Namenskonventionen: Achte darauf, dass die Namen deiner Checkboxen eindeutig sind, um Verwirrungen zu vermeiden. Verwende klare und beschreibende Namen.
  • Fehlerüberprüfung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Code robust ist. Verwende On Error Resume Next, um Fehler zu ignorieren und eine benutzerfreundliche Ausgabe zu liefern.
  • Modularität: Organisiere deinen Code in Module und Funktionen, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Warum funktioniert mein Code nicht, wenn ich ThisWorkbook.Sheets("Datenblatt") verwende?
Das könnte daran liegen, dass die Checkbox nicht im richtigen Kontext angesprochen wird. Stelle sicher, dass du die Checkbox über die OLEObjects-Eigenschaft abfragst.

2. Wie kann ich mehrere Checkboxen gleichzeitig abfragen?
Du kannst eine Schleife verwenden, um alle Checkboxen in einem Arbeitsblatt abzufragen. Hier ein Beispiel:

Dim i As Integer
For i = 1 To wDatenblatt.OLEObjects.Count
    If wDatenblatt.OLEObjects(i).Object.Value = True Then
        ' Code für gesetzte Checkbox
    End If
Next i

Nutze diese Anleitung, um sicher und effektiv mit Excel VBA Checkboxen zu arbeiten!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige