PDA

Vollständige Version anzeigen : Listenfeld mit Kontrollkästchen


okais
22.08.2017, 09:33
Guten Morgen,
Ich würde gerne eine ausklappbare Checkliste erstellen, in der bestimmte Punkte stehen die mittels Kontrollkästchen abgehackt wetrden können.
´
Hat jemand eine Ahnung wie das funktioniert? Ich bin leider dabei überfordert...
Vielen Dank schonmal für die Antworten.

MfG
Okais

R J
22.08.2017, 09:52
Hi Okais,

stell die ListStyle Eigenschaft auf 1 (frmListStyleOption) und die Multiselect Eigenschaft entweder auf 1 oder 2.

okais
22.08.2017, 10:03
Hi Ralf,
danke für die schnelle Antwort.
Kannst du mir genauer erklären wo ich das umstellen kann? Bin relativer Anfänger und brauche ewig um mich zurecht zu finden...
Danke :)

Beverly
22.08.2017, 10:30
Hi,

wenn es eine ComboBox sein soll (beides ausklappbar), dann kann man keine Kontrollkästchen davor setzen - das geht nur bei einer ListBox.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

okais
22.08.2017, 11:44
Ok, aber wie kann ich dás Listenfeld denn ändern in derVBA.
Ich blick da nicht ganz durch, könntet ihr mir mal was schreiben, dass ich nach vollziehen kann wie ich es zu Porgrammieren habe? :D

Beverly
22.08.2017, 13:13
Wenn es sich um ein Steuerelement ActiveX-Steuerelement handelt, dann musst du unter den Eigenschaften Multiselect auf fmMultiSelectMulti einstellen und ListStyle auf fmListStyleOption - es muss also nichts programmiert werden.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

R J
22.08.2017, 13:52
...im Ribbon der Entwicklertools auf Entwurfsmodus klicken, die Listbox auswählen und dann wieder im Ribbon (oder über Rechtsklick in der LB) Eigenschaften auswählen. Dort, auf der linken Seite des Eigenschaftenfensters die Eigenschaften suchen und auf der rechten Seite anpassen

okais
22.08.2017, 13:54
Ok ich verstehe, hat soweit funktioniert.
Nur kann ich mit den ActiveX-Steuerelement keine Zellen anwählen in denen meine Checkliste definiert ist.
Wie bekomme ich jetzt noch meine Checkpunkt in diese Liste? #dummeFragenichweiß...

R J
22.08.2017, 13:56
...das müsstest Du jetzt tatsächlich programmieren....;)

Beverly
22.08.2017, 14:01
Lade deine Mappe hoch.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

okais
22.08.2017, 14:02
Ok Vielen Dank für deine Antworten und Geduld :)
Sprich ich hab jetzt leeres Feld und wenn ich etwas eintragen möchte muss ich es Programmieren.
Habe ich das so richtig verstanden? :D

okais
22.08.2017, 14:05
Hurra, ich habs endlich evrstanden :D nach 6 Std. recherchieren...
Hab jetzt folgendes eingegeben:
Private Sub UserForm_Initialize()
With ListBox1
.AddItem "Materialzufuhr kontrolliert"
.AddItem "Nachdruck/-zeit optimiert"
.AddItem "Einspritzprofile kontrolliert"
.AddItem "Zylindertemp."
.AddItem "Heißkanaltemp."
.AddItem "Werkzeugtemp."
.AddItem "Restfeuchte"
.AddItem "Dosierweg/-geschwindigkeit kontrolliert"
.AddItem "Staudruck kontrolliert"
.AddItem "Dekompression kontrolliert"
.AddItem "Restmasspolster kontrolliert"
.AddItem "Rückstromsperre kontrolliert"
.AddItem "Kühlzeit kontrolliert"
.AddItem "Düsenquerschnitt/-radius kontrolliert"
.AddItem "Einspritzvolumen kontrolliert"
End With
End Sub
Und es hat funktioniert. Ist zwar dsa simpelste vom simpelsten aber egal xD

Beverly
22.08.2017, 14:07
Wenn es immer dasselbe Feld ist, dann muss nichts programmiert werden - in diesem Fall reicht, wenn man unter den Eigenschaften der ListBox bei LinkedCell die betreffende Zelladresse einträgt.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Beverly
22.08.2017, 14:09
Ach so, du meintest, wie man die ListBox füllt...

Eine Möglichkeit hast du ja bereits gefunden. Es gibt noch eine weitere: schreibe deine Daten in eine Spalte im Tabellenblatt und trage bei der Eigenschaft RowSource diesen Zellbereich ein.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

okais
22.08.2017, 14:25
Ahhh sehr gut, wieder viel gelernt :D
Tausend Dank^^

1. Mir ist jetzt aufgefallen, dass die Checkliste nicht automatisch beim start abgezeigt wird, sondern erst wenn ich das Makro händisch starte. Wie kann ich das ändern?
2. Wenn ich Datei schließe und wieder öffne werden mir nicht die bereits gesetzten Häkchen angezeigt... Sie wurden einfach gelöscht, aber ich will dass sie für andere Abteilung beim erneuten Öffnen sichtbar sind. Wie kann ich verhindern dass die Auswahl verworfen wird?

Beverly
22.08.2017, 14:33
Es gibt auch noch eine weitere Möglichkeit:

Private Sub UserForm_Initialize()
Dim arrDaten()
arrDaten = Array("Wert1", "Wert2", "Wert3", "Wert4") '<== hier alle deine Auswahlwerte auflisten
Me.ListBox1.List = arrDaten()
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

R J
22.08.2017, 15:05
...Du musst die Änderrungen auch speichern....:)

Beverly
22.08.2017, 15:21
Hi,

wenn du weitere Fragen zu einem Thema hast, dann schreibe bitte einen neuen Beitrag, weil man zu späteren Änderungen in Beiträgen keine Mailbenachrichtigung erhält und wenn ich nicht zufällig nochmal in den Thread geschaut hätte, hätte ich die Änderung nicht bemerkt.

zu Frage1: die Liste muss doch erst per Code gefüllt werden, ehe die Inhalte angezeigt werden können, du musst das UserForm also irgendwie erstmal starten - z.B. mit einem CommandButton im Tabellenblatt oder beim Öffnen der Arbeitsmappe

zu Frage 2: wenn eine getroffene Auswahl beim Starten der Arbeitsmappe wieder angezezeigt haben möchtest, musst du die Auswahl vorher im Tabellenblatt speichern (weil ein UserForm nur zur Laufzeit exisitert) und dann die Auwahl beim Starten des UserForms wieder neu "laden".

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

okais
23.08.2017, 07:07
Guten Morgen,
wie kann ich die Auswahl wieder laden? Ich wähle Punkte aus, gehe auf Dokument speichern und öffne das Dokument erneut, aber meine Auswahl ist verloren gegangen.
MfG

Beverly
23.08.2017, 08:27
Hi,

hatte ich doch in meinem vorhergehenden Beitrag in "zu Frage 2" geschrieben - mann muss die Auswahl (irgendwo hin) ins Tabellenblatt schreiben, damit man sie beim Öffnen bzw. Starten des UserForms wieder ins UserForm übernehmen kann.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

R J
23.08.2017, 12:14
Da Du ja offenbar erhebliche Probleme damit hast, anbei mal ein Beispiel.
In Tabelle1 befindet sich eine Listbox mit dem Namen lbAuswahl, die ihre anzuzeigenden Werte aus dem Bereich von A2 bis A5 bezieht. In Spalte B (gleiche Zeilen) steht dann ein Ja oder eben nichts. Wenn dort ein Ja steht, soll der entsprechende Eintrag in der Listbox ausgewählt sein, sonst nicht.
Umgekehrt soll, wenn in der Listbox etwas verändert wird, die Auswahl mit Ja oder nichts in Spalte B gespeichert werden.
Ausgelesen werden die Werte in der Prozedur Aktualisieren im Modul mFkt.

Angestoßen wird diese Prozedur im
Ereignis Workbook_Open im Modul DieseArbeitsmappe und im
Ereignis Worksheet_Activate im Modul Tabelle1

Eingetragen (in Spalte B) werden die Werte über das Ereignis lbAuswahl_Change. Ebenfalls im Modul der Tabelle1.

Beverly
23.08.2017, 13:45
Hi,

das WIE hängt übrigens davon ab, wie dein UserForm und die Mappe aufgebaut sind und wie du die ListBox schlussendlich mit deinen Daten füllst.
Anbei mal ein Beispiel, wie man es lösen könnte, indem man die Auswahl ins Tabellenblatt schreibt - bei Drücken des CommandButtons im UserForm wird der Index der Auswahl in Spalte B eingetragen und beim Starten des UserForms wieder zurückgelesen.
Das UserForm wird übrigens mit Daten aus dem Tabellenblatt gefüllt (Spalte A).

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

okais
24.08.2017, 06:24
Okay, danke habe es mit Hilfe von einem Arbeitskollegen hin bekommen.
Gruß Okais