Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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

Listbox Auswahl nicht verlieren

Listbox Auswahl nicht verlieren
Daniel
Guten Morgen allerseits,
folgende Situation: mit einem CommandButton(ActiveX) rufe ich eine Userform mit einer Listbox auf, deren Inhalt (das sind die sieben Wochentage) automatisch aus bestimmten Zellen eingelesen wird. Per Klick auf einen Button innerhalb der Userform wird die jeweils vorgenommene (Mehrfach-)Auswahl in einen Zellbereich geschrieben (ohne Leerzeilen), mit einem weiteren Button können die ausgewählten Listbox-Einträge (und auch deren in die Zellen geschriebenen Kopien) gelöscht werden.
Diesen Part habe ich gestern mühsam gelernt, und seit heute früh funktioniert es auch.
Natürlich stellen sich nun weitere Fragen, für die ich Euch um Hilfe bitte:
1.) Was muss ich tun, damit nach erfolgter Auswahl in der Listbox diese Markierungen bei einem weiteren Aufruf der Userform mit der Listbox wieder angezeigt/als ausgewählt markiert werden? Momentan ist bei jedem Aufruf der erste mögliche Eintrag mit einem gepunkteten Rahmen umgeben.
2.) Wie kann ich erreichen, dass die Userform nur geschlossen werden kann, wenn mindestens ein Eintrag aus der Listbox ausgewählt wurde?
Ich freue mich über Unterstützung sehr.
Gruß
Daniel

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

Betreff
Benutzer
Anzeige
AW: Listbox Auswahl nicht verlieren
09.08.2011 12:54:48
Daniel
Ich bin einen Schritt weiter.
Zu 2.): ich habe mindestens einen Eintrag zu erzwungen, in dem ich die einzige Möglichkeit die Userform zu schließen ("das x-Kreuz" habe ich deaktiviert), das ist der erste Button in der Userform, in seiner Eigenschaft "enable" standardmäßig auf "false" gesetzt habe. "enable" wird wieder auf "true" gesetzt durch dieses hier:
Private Sub ListBox1_Change()
If ListBox1.ListIndex  0 Then cmd1.Enabled = True
End Sub
Die Frage 2.) ist damit aber leider nicht vollständig gelöst. Wenn ich in der Listbox einen Eintrag auswähle und durch einen weiteren Klick die Auswahl wieder zurücknehme, kann ich die Userform mit dem Button doch schließen. Um den Eintrag herum ist wieder diese gepunktete dünne Linie zu sehen.
Ich habe das Gefühl, dass auch meine ungelöste Frage 1.) vielleicht das gleiche "Ding" als Ursprung des Problems hat.
Kann mir vielleicht jemand zur Seite springen und mir behilflich sein?
Gruß
Daniel
Anzeige
AW: Listbox Auswahl nicht verlieren
09.08.2011 15:11:34
fcs
Hallo Daniel,
die Change-Ereignis-Prozedur muss man so anpassen, dass die Selected-Eigenschaft aller Listbox-Einträge geprüft wird, und danach dann ggf. der Command-Button Enabled auf True/False gesetzt wird.
Frühere Auswahl im Userform wieder anzeigen.
Wenn du "nur" die aktuell ausgewählten Werte immer wieder anzeigen willst, dann muss du das Userform mit der Hide-Methode ausblenden.
Willst du die Auswahlwerte auch nach dem Schließen und erneutem Öffnen der Datei im Userform anzeigen wird es komplizierter. Dann müssen die Zellen in den die ausgewählten Werte eingetragen werden, in der Initialisierungsprozedur des Userforms ausgewerted werden und die Selected-Eigenschaft der Listbox-EInträge entsprechend auf True oder False gesetzt werden.
Gruß
Franz
Private Sub cmd1_Click()
'OK-Button
'Anweisungen zum Speichern der Information aus dem Userform in Tabelle
Me.Hide 'Userform ausblenden - aktuelle Daten im Userform bleiben erhalten bis zum Schliessen  _
der Datei _
oder Unload-Methode für das userform
End Sub
Private Sub ListBox1_Change()
Dim bButtonTrue As Boolean, ii As Integer
With Me.ListBox1
For ii = 0 To .ListCount - 1
If .Selected(ii) = True Then
bButtonTrue = True
Exit For
End If
Next
If bButtonTrue = True Then
Me.cmd1.Enabled = True
Else
Me.cmd1.Enabled = False
End If
End With
End Sub

Anzeige
AW: Listbox Auswahl nicht verlieren
09.08.2011 16:04:26
Daniel
Aha! Vielen Dank Franz. Das hilft mir schon sehr weiter. Das change-Ereignis funtktioniert nun toll! Und auch mit "hide" anstatt "unload" bin ich einen deutlichen Schritt weiter, klappt auch schön.
Dummerweise wollte ich die Auswahl(en) der Listbox aber mit der Datei speichern und mit dem Schließen nicht verlieren. Wie der grundsätzliche Ansatz ist hast Du ja beschrieben, kannst Du dennoch ein bißchen nachhelfen, weil ich kein VBA-Mensch bin. Ich kämpfe mich da eher so durch.
viele Grüße
Daniel
AW: Listbox Auswahl nicht verlieren
09.08.2011 22:05:12
fcs
Hallo Daniel,
die Methode, wie man am geschicktesten, die vorhandenen Tabelleneinträge auswertet und die entsprechenden Einträge in der Liste markiert, hängt ein wenig von der Anordnung der Einträge im Tabellenblatt ab.
So wie ich deine Hinweise in deiner 1. Frage verstehe, dann kannst du schon die markierten Einträge auswerten und in ein Tabellenbellenblatt eintragen. D.h. du hast einen Tabellenbereich mit den Auswahlwerten Montag bis Sonntag = RowSource der Auswahlliste?
Und du schreibst die Auswahlwerte z.B. Montag, Mittwoch, Freitag in andere Zellen untereinander?
Für das Setzen der Einträge in der Listbox beim Öffnen der Userform geht das jetzt rückwärts.
In einer Schleife werden der Zellen abgefragt und mit den Werten der Listbox verglichen, stimmt der Wert überein, dann wird die Selected-Eigenschaft auf True gesetzt.
In der Beispieldatei hab ich das mal umgesetzt.
https://www.herber.de/bbs/user/76084.xls
Gruß
Franz
Anzeige
AW: Listbox Auswahl nicht verlieren
10.08.2011 16:49:58
Daniel
Hallo Franz,
ich mache gerade einen Luftsprung, vielen Dank für Deine Hilfe und die Beispieldatei. Der Code macht in der Tat genau, was ich erreichen wollte. Ich werde mich mal ein bißchen näher mit diesen Schleifen befassen, denn die sind hier wohl der "schlaue Part", um nicht zu sagen des Rätsels Lösung. Besten Dank noch einmal, so habe ich dieses Problem endlich aus dem Nacken.
Viele Grüße
Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige