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

Forumthread: VBA: Name von aktiver Checkbox auslesen

VBA: Name von aktiver Checkbox auslesen
27.02.2017 18:45:39
aktiver
Hallo,
ich habe eine Userform mit diversen Checkboxen und möchte gerne bei allen den gleichen VBA-Code verwenden, nur dass sich eben immer der Name der Checkbox ändert.
Gibt es eine Möglichkeit, den Namen dynamisch auszulesen, damit man ihn nicht hardcoden muss (wie hier "Check1All") ? Ähnlich wie das Me bei der Userform oder This etc. in anderen Sprachen ?
Mein Code:
Private Sub Check1All_Click()
Dim varCategory As String
Dim varValue As String
With Check1All ' statt Check1All sollte der Name der aktuellen Checkbox verwendet werden
varCategory = Left(.Name, Len(.Name) - 3)
varValue = .Value
End With
Call CheckAll(varCategory, varValue)
End Sub
Vielen Dank Euch im Voraus,
Tim
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 18:55:50
aktiver
Hallo,
am einfachsten mit der ActiveControl-Eigenschaft:
Private Sub Check1All_Click()
Dim varCategory As String
Dim varValue As String
With ActiveControl  ' statt Check1All sollte der Name  _
der aktuellen Checkbox verwendet werden
varCategory = Left(.Name, Len(.Name) - 3)
varValue = .Value
End With
Call CheckAll(varCategory, varValue)
End Sub

Gruß, Mullit
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 19:01:33
aktiver
Hi Mullit,
vielen Dank.
ActiveControl habe ich schon zuvor probiert, das kennt aber offenbar die .Value Eigenschaft nicht.
VG,
Tim
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 19:11:11
aktiver
Hallo,
na det wüst ik aber, das geht problemlos:
Option Explicit
Private Sub CheckBox1_Click()
MsgBox ActiveControl.Value
End Sub

Gruß, Mullit
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 19:41:26
aktiver
Hi Mullit,
Bei mir geht es leider nicht.
Wenn ich Check1All mit ActiveControl ersetze, springt der Debugger auf die Zeile mit dem Value und ich sehe Value auch nicht in dem Popup-Fenster mit den Optionen, das erscheint, wenn man anfängt, den Code zu schreiben.
VG,
Tim
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 19:52:18
aktiver
Hallo,
dann sag mal, wie genau die Fehlermeldung lautet...
Gruß, Mullit
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:04:11
aktiver
Es gibt keine Fehlermeldung - der Debugger springt auf die Zeile mit dem Value.
VG,
Tim
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:10:35
aktiver
Hallo Tim,
warum machst Du nicht eine kleines Beispiel uns stellst es hier bereit.
Alles andere ist doch nur Kaffesatz-Leserei!
Gruß von Luschi
aus klein-Paris
PS: bei mir klappt das mit 'ActiveControl.Value' usw.!
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:09:06
aktiver
...Run-time error '438':
Object doesn't support this property or method...
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:29:38
aktiver
Hallo Tim,
aha doch ne Meldung, ist allerdings etwas eigenartig, ich hab kein xl2013, könnte sein daß Du da noch so referenzieren mußt:
Option Explicit
Private Sub CheckBox1_Click()
MsgBox ActiveControl.Object.Value
End Sub

Aber da's bei Luschi auch lief und wie er schon schrieb, lad mal ne Bsp.-mappe hoch...
Gruß, Mullit
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:45:36
aktiver
Hallo,
ja böse Falle, ich konnt jetzt Deine Fehlermeldung reproduzieren, wahrscheinlich befindet sich bei Dir die Box in einem Frame, dann ist das oberste ActiveControl das Frame-Objekt, daher die Meldung, Du müsstest also schreiben:
Option Explicit
Private Sub CheckBox1_Click()
MsgBox ActiveControl.ActiveControl.Value
End Sub

Gruß, Mullit
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:48:51
aktiver
Hallo Mullit,
Super, genau das war das Problem - vielen Dank dafür, da wär ich nie drauf gekommen.
VG und einen schönen Abend,
Tim
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 20:52:37
aktiver
Hallo Tim,
ich hoffe, daß Du daraus lernst, daß ein klitzekleines Beispiel mehr bring als unnötiges Geshwafel.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA: Name von aktiver Checkbox auslesen
27.02.2017 21:01:01
aktiver
Sinnloses Geschwafel sind wohl eher deine arroganten Belehrungen.
Hast Du nichts besseres zu tun ?
Schade, dass es Menschen wie dich gibt.
AW: VBA: Name von aktiver Checkbox auslesen
01.03.2017 08:13:42
aktiver
Hallo Tim,
wenn Du zu folgenden Maßnahmen keine Lust hast
- eigene Weiterbildung
- Bnutzung von Fachbücher
- Google-Suche anwerfen
- Erstellung von Demo-Bbeispielen zur Unterstützung der Lösungsfindung
dann mach weiter so, denn es kostete Dir ja nichts und viele fleißige Helfer arbeiten für den Trash.
Luschi aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktive Checkbox in VBA auslesen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle eine Userform. Füge mehrere Checkboxen hinzu, die du auslesen möchtest.

  2. Füge den folgenden VBA-Code in das Codefenster der Userform ein:

    Private Sub Check1All_Click()
       Dim varCategory As String
       Dim varValue As String
       With ActiveControl ' Hier wird der Name der aktuellen Checkbox verwendet
           varCategory = Left(.Name, Len(.Name) - 3)
           varValue = .Value
       End With
       Call CheckAll(varCategory, varValue)
    End Sub
  3. Verwende ActiveControl, um den Namen der aktiven Checkbox auszulesen. Dies ermöglicht es dir, eine dynamische Lösung zu erstellen, ohne den Namen jeder Checkbox hardcodieren zu müssen.


Häufige Fehler und Lösungen

  • Fehler: "Object doesn't support this property or method"

    • Lösung: Stelle sicher, dass du die Checkbox nicht in einem Frame platziert hast. In diesem Fall musst du auf die innere Checkbox zugreifen:
      MsgBox ActiveControl.ActiveControl.Value
  • Fehler: ActiveControl.Value wird nicht erkannt

    • Lösung: Überprüfe, ob du die richtige Eigenschaft des ActiveControl-Objekts verwendest. Möglicherweise musst du die Referenz zu ActiveControl.Object.Value ändern, wenn du eine andere Version von Excel verwendest.

Alternative Methoden

  • Verwendung von Me.Controls: Du kannst den Namen der Checkbox auch über die Controls-Sammlung der Userform abrufen:

    Dim cb As MSForms.CheckBox
    Set cb = Me.Controls("Check1All")
    MsgBox cb.Value
  • Loop durch alle Checkboxen: Mit einem Loop kannst du alle Checkboxen auf der Userform durchlaufen:

    Dim ctrl As Control
    For Each ctrl In Me.Controls
      If TypeOf ctrl Is MSForms.CheckBox Then
          MsgBox ctrl.Name & ": " & ctrl.Value
      End If
    Next ctrl

Praktische Beispiele

  1. Dynamisches Auslesen der Checkbox-Werte:

    Private Sub CheckBox1_Click()
       MsgBox "Checkbox " & ActiveControl.Name & " ist " & ActiveControl.Value
    End Sub
  2. Alle Checkboxen auf der Userform auslesen:

    Private Sub CommandButton1_Click()
       Dim ctrl As Control
       Dim checkedBoxes As String
       For Each ctrl In Me.Controls
           If TypeOf ctrl Is MSForms.CheckBox And ctrl.Value = True Then
               checkedBoxes = checkedBoxes & ctrl.Name & vbCrLf
           End If
       Next ctrl
       MsgBox "Ausgewählte Checkboxen:" & vbCrLf & checkedBoxes
    End Sub

Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler frühzeitig zu erkennen.
  • Bevor du mit VBA arbeitest, stelle sicher, dass deine Checkboxen richtig benannt sind, um Verwirrung zu vermeiden.
  • Verwende die Debug.Print-Anweisung, um Werte während der Laufzeit zu prüfen, falls du Probleme hast.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Namen der Checkbox in einer MessageBox anzeigen?
Antwort: Du kannst den Namen der Checkbox einfach über ActiveControl.Name abrufen und in einer MessageBox anzeigen.

2. Frage
Was tun, wenn ActiveControl nicht funktioniert?
Antwort: Überprüfe, ob sich die Checkbox in einem Frame befindet. In diesem Fall musst du auf ActiveControl.ActiveControl zugreifen.

3. Frage
Wie kann ich mehrere Checkboxen mit einem einzigen Klick steuern?
Antwort: Du kannst eine Schleife verwenden, um durch alle Checkboxen zu iterieren und deren Werte zu setzen oder auszulesen.

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