Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Name von CheckBox auslesen

Name von CheckBox auslesen
02.05.2019 16:29:05
CheckBox
Hallo zusammen,
ich habe Probleme mit dem Auslesen des Namens einer CheckBox in einem UserForm.
Zunächst setze ich die "ControlSource" der CheckBox mit:
Private Sub UserForm_Initialize()
Me.Controls("CheckBox1").ControlSource = "Tabelle1!A1"
End Sub
Im Anschluss daran möchte ich mit dem folgenden Code den Namen der CheckBox (in einer MultiPage!) beim Ändern der CheckBox auslesen:
Private Sub CheckBox1_Click()
MsgBox Me.MultiPage1.Pages(1).ActiveControl.Name
End Sub
Leider funktioniert das nicht. Habt Ihr eine Idee?
Ich vermute, dass es mit dem Setzen der "ControlSource" zu tun hat. Wenn ich diese vorher nicht setze, kann ich den Namen auslesen.
Vielen Dank im voraus und viele Grüße
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
MultiPage1.SelectedItem.ActiveControl.Name (owT)
02.05.2019 16:45:50
EtoPHG

AW: MultiPage1.SelectedItem.ActiveControl.Name (owT)
02.05.2019 16:53:00
Martin
Hallo EtoPHG,
Danke für die schnelle Rückmeldung. Leider funktioioniert das auch nicht.
Ich bekomme die Fehlermeldung:
Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt
Anbei eine Beispieldatei:
https://www.herber.de/bbs/user/129534.xlsm
Viele Grüße
Martin
AW: MultiPage1.SelectedItem.ActiveControl.Name (owT)
02.05.2019 17:05:15
EtoPHG
Hallo Martin,
VBA gut? Das Ändern der Controlsource löst einen _Click aus!
Private Sub CheckBox1_Click()
Static bExit As Boolean
If bExit Then MsgBox Me.MultiPage1.SelectedItem.ActiveControl.Name
bExit = True
End Sub
Aber ehrlich gefragt, was soll dieses Konstrukt überhaupt?
Gruess Hansueli
Anzeige
AW: Name von CheckBox auslesen
02.05.2019 20:38:40
CheckBox
Hi
wie schon geschrieben, das problem ist, dass du mit dem Setzen der ControlSource im Initialize-Event den Checkboxwert veränderst und damit das Click-Event auslöst.
zu diesem Zeitpunkt hat die Multipage aber noch gar kein aktiven Steuerlement, daher dann der Fehler.
ich würde hier vorschlagen, dass du die ControlSource-Eigenschaft nicht per Code im Initialize-Event setzt, sondern von Hand im VBA-Editor im Eigenschaftsfenster. Dann wird beim Start das Klick-Event nicht ausgelöst.
Im Initialize-Event sollte man per Code nur die Eigenschaften setzen, die veränderlich sind und beim Start der Userform aktuell berechnet werden müssen. Alles was immer gleich ist, solltest du von von Hand in den Eigenschaftslisten einstellen.
die andere frage wäre, warum du hier auf das ActiveControl gehst. Der Name der Checkbox ändert sich ja nicht dh du könntest ihn auch direkt als festen Wert angeben.
dann passiert auch nichts, wenn du die Checkbox auf eine andere Seite verschiebst.
alternativ könntest du auch statt dem Click-Event das MouseUp-Event verwenden.
das wird nur ausgelöst, wenn der Anwender mit der Maus auf die Checkbox klickt und nicht bei Änderungen durch den Code (aber auch nicht bei Änderungen über die Tastatur, dh dann müsstest du ggf zusätzlich das KeyUp-Event einsetzen.)
nächste Frage, warum nimmst du hier Me.Controls(...)?
das brauchst du eigentlich nur, wenn der Steuerelementname berechnet wird. Ist er fix, kannst du das Element auch direkt ansprechen: Checkbox1.Controlsource = "Tabelle1!A1"
Gruß Daniel
Anzeige
AW: Name von CheckBox auslesen
03.05.2019 11:40:42
CheckBox
Hallo Daniel,
hallo EtoPHG,
vielen Dank für Eure Antworten!
Ok, vielleicht fange ich nochmal von vorne an.
Ich versuche eine Art Dokumentengenerator zur Erzeugung verschiedener tabellarischer Dokumente für mehrere Baugruppen aufzubauen.
D.h. ich habe eine Liste von Baugruppen, welche wahlweise aus verschiedenen Bauteilen bestehen.
Mittels Userform möchte ich nun die Werte in jede Bauteilzeile schreiben und diese manuell ausblenden, falls keine Daten zu dem Bauteil vorliegen. Somit kann man am Ende ein Dokument ausdrucken, welches nur die tatsächlich notwendigen Zeilen ausgibt (d.h. alle Leerzeilen sind nicht sichtbar).
In der Userform kann man dann von Baugruppe zu Baugruppe springen, um die Eintragungen zu ändern.
Hier eine Demodatei zu dem beschriebenen Programm:
https://www.herber.de/bbs/user/129549.xlsm
Die Herausforderung ist nun, dass ich mindestens 150 Baugruppen a mindestens 20 Bauteile je Baugruppe habe. Darüber hinaus können in einer Zeile mehrere TextBoxen, ComboBoxen und/oder CheckBoxen vorkommen.
D.h. ich habe eine Vielzahl an "...Boxen", die ich nicht alle per Hand eintragen/ändern möchte. Auch kann der Bezug nicht "fix" sein, da man in der Userform ja von Baugruppe zu Baugruppe springen können soll.
Soweit funktioniert das Programm schon ganz gut. Die konkrete Frage wäre,
- wie ich die ComboBoxen i bis n initialisiere (s. UserForm_Initialize() )?
- wie ich die jeweiligen Zeilen mit den CheckBoxen ausblende, ohne für jede CheckBox ein eigenes CheckBoxX_Click() programmieren zu müssen?
Ich hoffe, dass meine Beschreibung und Demodatei verständlich sind.
Vielen Dank und viele Grüße
Martin
Anzeige
AW: Name von CheckBox auslesen
03.05.2019 13:32:59
CheckBox
Hi
bei dem Projekt solltest du dich vielleicht mal mit Klassenprogrammierung auseinander setzen, insbesondere dann, wenn du vor hast, Steuerelemente zu Laufzeit hinzuzufügen.
Damit kann man dann Eventmakros erstellen, die für mehrere Steuerelemente gelten.
Mehr kann ich dir dazu aber auch nicht sagen, weil ich mich damit auch nicht auskenne.
zu deiner zweiten Frage:
verknüpfe jede Checkbox über die ControlSource mit einer Ausgabezelle, die in der Zeile liegt, die über die Checkbox ein- und ausgeblendet werden soll.
das müsste ggf auch mit einer Schleife gehen (über die Controls), da das ja "nur" eine Eigenschaftsänderung ist.
das ein- und ausblenden der Zellen machst du dann über das Change-Event auf dem Tabellenblatt, denn wenn du eine vernküpfte Checkbox änderst, wird dieses ausgelöst.
dann brauchst du für die einzelnen Checkboxen keine Click-Eventmakros mehr.
Gruß Daniel
Anzeige
AW: Name von CheckBox auslesen
03.05.2019 14:15:22
CheckBox
Hallo Daniel,
ja, das mit der Klassenprogrammierung hatte ich sogar schonmal drin. Habe es aber dann verworfen, da auch ich mich nicht richtig damit auskenne.
Danke für den Tipp mit dem Change-Event. Das werde ich mal ausprobieren.
Viele Grüße
Martin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige