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

Bestimmte Einträge in ListBox beim Öffnen markiere

Bestimmte Einträge in ListBox beim Öffnen markiere
13.03.2013 18:48:45
Kasimir
Hallo an alle!
Ich habe da eine Frage zu einem Vorhaben. Ich möchte eine in einer UserForm befindlichen ListBox beim Öffnen mit Daten aus 20 untereinander befindlichen Zellen füllen. Soweit bin ich schon mal. Das mache ich mit
For i = 25 To 45
ListBox1.AddItem Cells(i, 1)
Next

Nun möchte ich in der ListBox mehrere Einträge markieren. Das geht ja wenn die Multiselect-Einstellung entsprechend eingestellt ist. Diese markierten Einträge sollen dann nach dem Betätigen eines Buttons alle durch ein Komma getrennt in eine Zelle, z.B. D2, eingetragen werden.
Wenn ich dann wieder die UserForm öffne, sollen alle Einträge, die sich in der Zelle D2 befinden in der ListBox markiert werden.
Mal ein Beispiel:
In der ListBox stehen untereinander die Begriffe „Haus“, „Auto“, „Baum“, „Rasen“, „Garage“, und „Garten“.
Markiert werden die Begriffe „Auto“, „Garage“ und „Garten“. Diese Begriffe sollen nun durch ein Komma getrennt in Zelle D2 eingetragen werden, also „Auto, Garage, Garten“.
Nach dem erneuten Öffnen der ListBox sollen nun die Einträge „Auto“, „Garage“ und „Garten“ in der ListBox markiert werden.
Meine Frage nun, geht soetwas und wenn ja wie?
Danke Euch schon mal vorab,
Kasimir

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Einträge in ListBox beim Öffnen markiere
13.03.2013 19:30:10
Kasimir
Hallo Leute!
Ich habe es alleine hinbekommen. Für alle die es interessiert, hier der Code aus meiner UserForm.

Private Sub CommandButton2_Click()
Dim i As Integer
Dim strText As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
strText = strText & ", " & ListBox1.List(i)
End If
Next
Range("C25") = Mid(strText, 3, Len(strText))
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim strText() As String
Dim intText As Integer
Dim i   As Integer
With ListBox1
.Clear
.MultiSelect = 1
For i = 25 To 43
.AddItem Cells(i, 1)
Next
strText = Split(Range("C25"), ",")
For i = 0 To UBound(strText)
For n = 0 To .ListCount - 1
If Replace(.List(n), " ", "") = Replace(strText(i), " ", "") Then
.Selected(n) = True
Exit For
End If
Next
Next
End With
Beim Öffnen der UserForm werden die Texte aus Zelle C25 in der ListBox markiert. Beim Betätigen _ von CommandButton2 werden die markierten Texte mit einem Komma getrennt in Zelle C25 übertragen. Gruß, Kasimir

Anzeige
AW: Bestimmte Einträge in ListBox beim Öffnen markiere
13.03.2013 19:42:46
Daniel
Hi
ich würde in D2 nicht den Klartext speichern, sonden einfach nur, ob der jeweilige Listboxeintrag aktiviert ist oder nicht.
das macht nacher das Einlesen viel leichter.
hier der Code dazu:
1. Listbox zustand speichern:
Dim i As Long
Dim txt As String
For i = 0 To ListBox1.ListCount - 1
txt = txt & -CLng(ListBox1.Selected(i))
Next
Range("D2") = "'" & txt
2. Listbox zustand wieder herstellen:
Dim i As Long
Dim txt As String
txt = Range("D2").Value
For i = 1 To Len(txt)
ListBox1.Selected(i - 1) = CBool(Mid(txt, i, 1))
Next
wenn die gewählten Elemente als Klartext in eine Zelle stehen sollen, dann so:
Dim i As Long
Dim txt As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then txt = txt & " " & ListBox1.List(i)
Next
Range("D3") = Mid(txt, 2)

aber wie gesagt, daß nur zum Anzeigen, aber nicht um den Listboxzustand zu speichern oder wiederherzustellen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige