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

Problem mit Listbox-Indexen

Problem mit Listbox-Indexen
03.01.2014 14:31:26
Pascal
Guten Tag
Ich stehe mal wieder vor einem – für mich unlösbaren – Problem:
Auf einer Userform (Frm_Zielsuche) hab ich u.a. eine Listbox in welche ich diverse Werte ab einem Tabellenblatt reinlade.
Die Werte lad ich alle über die Funktion Frm_Zielsuche.ListBox1.AddItem Cells(i, 2) in die Listbox.
Das funktioniert soweit sehr gut.
Wenn ich nun in der Listbox auf einen Eintrag klicke, so wird mir dieser in dem entsprechenden Tabellenblatt angewählt / selektiert. Es wird dann die entsprechende Listindex-Nummer ermittelt und anhand dieser Nummer auf einem Tabellenblatt "Zielsuche" die entsprechende Zeile markiert.
Es werden dann ab dem Tabellenblatt diverse weitere Daten beim entsprechenden Datensatz gelesen und in Textboxen auf der Userform (Frm_Zielsuche) angezeigt.
Das finden und selektieren des entsprechend in der Listbox1 markierten Eintrags mach ich über folgenden Code:
Nummer_in_Liste = ListBox1.ListIndex + 1 'Plus 1, weil der erste Eintrag in einer Listbox nicht die 1 trägt, sondern die Null
Range("B" & Nummer_in_Liste).Activate
Auch das funktioniert soweit perfekt.
Nun mein eigentliches Problem:
Ich habe auf der Userform u.a. auch noch diverse Option-Buttons, mittels denen ich meine Listbox nach bestimmten werten filtern kann.
z.B. hab ich folgenden Code hinter der Optionbutton1:
Private Sub OptionButton1_Click() 'Mittels diesem Option-Button kann in den Suchresultaten nach  _
"Statistik" gefilter werden.
If OptionButton1.Value = True Then
With Sheets("Zielsuche")
'Alle gefilterten Einträge werden nun in die Listbox1 übertragen (aus Spalte "B" des  _
Zielsuche-Formulars)
'======================================================================================= _
Application.EnableEvents = False
Frm_Zielsuche.ListBox1.Clear
'Frm_Zielsuche.ListBox1.ListIndex.Clear
aRow = [B65536].End(xlUp).Row
For i = 1 To aRow
If Cells(i, 14) = "Statistik" Then
Frm_Zielsuche.ListBox1.AddItem Cells(i, 2) 'es werden nun alle nichtleeren Zeilen der  _
Spalte B in die ListBox1 eingelesen
End If
Next i
Application.EnableEvents = True
End With
Else
End If
End Sub
D.h. ich filtere mein Tabellenblatt ("Zielsuche") nach dem Wort "Statistik" und zeige somit in der Listbox nur noch die übereinstimmenden Werte (zu "Statistik") an.
Das funktioniert soweit auch perfekt.
Nun aber das Problem:
Die Indexe der nun in der Listbox angezeigten Werte bleiben nicht bestehen, sondern werden nun wieder neu erstellt.
Das hat dann zur Folge, dass beim Anwählen eines Eintrags in der Listbox nicht mehr die korrekte Zeilennummer auf dem Tabellenblatt "Zielsuche" markiert wird.
Beispiel:
Ohne Filterung nach "Statistik" muss z.B. ein User auf den 4. Listbox-Eintrag (mit dem Wort "Mai-Statistik") klicken, um diesen anzuwählen. (Die Listbox hat noch andere Worte drin als "Statistik")
Dadurch wird nun auf dem Tabellenblatt "Zielsuche" der 4. Datensatz markiert. (weil Listindex 4 = Zeilennummer 4)
Nun filtere ich (durch setzen des Optionbuttons) meine Listbox so, dass nur noch Werte mit dem Wort "Statistik" angezeigt werden.
Auch das funktioniert soweit gut.
Der Datensatz "Mai-Statistik" wird nun somit in der Listbox nicht mehr an 4. Stelle aufgeführt, sondern steht nun an 1. Stelle.
Wenn nun der User aus der neugeladenen (gefiltert nach "Statistik") Listbox1 den Datensatz "Mai-Statistik" anwählt, so wird mir auf dem Tabellenblatt "Zielsuche" immer eine falsche Zeile selektiert. Grund: der Datensatz "Mai-Statistik" steht auf dem Tabellenblatt ja immer noch in der 4. Zeile. Der Index selektiert mir aber die erste Zeile.
Wie also kann ich den bei jedem Filtern meiner Listbox auch den Index "mitfiltern" ?
D.h. durch das Filtern nach "Statistik" muss der Datensatz "Mai-Statistik" in der Listbox zwar an 1. Stelle stehen, muss aber den Listindex 4 (gemäss Ursprung) behalten.
Geht das irgendwie ?
Ich hoffe, meine Frage seie so verständlich. Leider ist meine Mappe zu gross um hier einstellen zu können.
Im voraus HERZLICHEN DANK für jegliche Hilfe

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

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Listbox-Indexen
03.01.2014 14:58:53
Pascal
... habs selber rausgefunden :-)
Da hatte sich bei mir in der Listbox-Befüllung ein Fehler eingeschlichen.
SORRY !!!!!
PROBLEM IST ALSO GELÖST

AW: Problem mit Listbox-Indexen
03.01.2014 15:06:48
fcs
Hallo Pascal,
formatiere deine Listbox1 unter den Eigenschaften so, dass ColumnCount = 2 ist und unter ColumnWidths setzt du die Breite der 2. Spalte auf 0 Beispiel: 80Pt;0Pt
Die 80 hier anpassen an die Breite der Listbox.
Beim Einlesen der Werte speicherst du dann die Nummer der Zeile in der 2. Spalte der Listbox:
  Frm_Zielsuche.ListBox1.AddItem Cells(i, 2)
Frm_Zielsuche.ListBox1.List(Frm_Zielsuche.ListBox1.ListCount - 1, 1) = i
Die Zeilen-Nummer des selektierten Eintrags ist dann:
  With Listbox1
Nummer_in_Liste = .List(.ListIndex, 1)  'Zeile des Listeneintrags in Tabelle
End With
Range("B" & Nummer_in_Liste).Activate
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige