VBA Listbox suche
#1
Guten Tag, 

ich habe ein kleines Problem und ich hoffe mir kann hier jemand helfen :)

Ich habe eine lange Liste von Nummern. 5000+ Zeilen
Die Nummern sind einzigartig und werden in zwei Spalten eingetragen (von bis) <-- Spalte A Zahl "von" Spalte B "bis".
Ich habe mit VBA eine Maske (UserForm) erstellt in der ich neue Nummern anlegen und eben auch verändern kann. 
Innerhalb dieser Maske habe ich eine ListBox, die alle meine Nummern der Spalte A anzeigt.

Ich möchte nun eine Suchfunktion einbauen, die mir in der Listbox die richtige Zeile anzeigt für einen Wert der Zwischen diesen beiden Zahlen liegt. 
Ich habe Beispielsweise die Nummern Spalte A (Von) 35000 und in der Spalte B (Bis) 35005
Suchen möchte ich nun aber die nach der Nummer 35004, die ja zwischen diesen Werten liegt, also will ich dass es mir die richtige Zeile in der ListBox anzeigt, so dass ich diese dann ggf. bearbeiten kann.
Ich habe im Internet einen Code gefunden, der mich zumindest nach den exakten Nummern in der Spalte A suchen lässt:
Code:
Private Sub CommandButton5_Click()

Dim i As Integer, ii As Integer
 Dim vntList, strTxt As String, arrSelected()
 strTxt = LCase(TextBox6)
 vntList = ListBox1.List
 ReDim arrSelected(ListBox1.ListCount - 1)
 For i = 0 To ListBox1.ListCount - 1
   For ii = 0 To ListBox1.ColumnCount - 1
     arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0
     If arrSelected(i) Then Exit For
   Next
 Next
 With ListBox1
 For i = 0 To .ListCount - 1
   .Selected(i) = arrSelected(i)
 Next
   End With

End Sub


Ich hoffe es kann mir jemand hier bei dem Problem helfen ;)

Grüße und danke


Naitscho
Top
#2
Hallo,

was hindert dich, alle Nummern in Spalte A zu schreiben?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
Hallo, 

ich würde sagen zuerst einmal fehlendes Wissen.
Mit den Zahlen gebe ich auch eine Anzahl aus, die ich eben in einer weiteren Spalte berechnen lasse.
Es ist ein Archiv für Muster, die eben eine fortlaufende Nummer besitzen und eben in diesen Paketen (von-bis) eingelagert werden. Aber auch einzeln. 
Wenn jetzt eben eines dieser Muster dazwischen gesucht wird muss man natürlich wissen ob es vorhanden ist und wo es liegt.

Hätte die Beschränkung auf eine Spalte denn Vorteile für mich in der Situation?

Grüße
Top
#4
Hallo,

sehe gerade, dass ich deine Anfrage falsch verstanden habe. Melde mich gleich noch mal mit einem Lösungsvorschlag.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#5
Hallo,

hier der Lösungsvorschlag:


Angehängte Dateien
.xlsm   Beispiel-16012018.xlsm (Größe: 19,73 KB / Downloads: 12)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#6
Guten Tag, 

danke für das Beispiel, leider ist es aber nicht ganz was ich Suche.

   
Hier ein Bild meiner UserForm. 
Ich habe auf der rechten Seite eine ListBox. Die eben alle vorhandenen Werte anzeigt. Darunter die Suche, die mir in der Listbox die entsprechenden Werte suchen und auswählen soll, wenn ich auf den Button Suchen klicke.
Top
#7
Hallo,

du erwartest jetzt aber nicht, dass ich das nachbaue?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#8
Hallo, 

ich kann dir gern meine Datei zur Verfügung stellen. Ich habe in einem anderen Beitrag gelesen, dass sich jemand Makros von fremden Quellen ungern auf den Rechner speichert. 

Anbei findest du die Datei.

Grüße


Angehängte Dateien
.xlsm   Wandlerarchiv1.xlsm (Größe: 60,92 KB / Downloads: 10)
Top
#9
Hallo Naitscho,

Zitat:Suchen möchte ich nun aber die nach der Nummer 35004, die ja zwischen diesen Werten liegt, also will ich dass es mir die richtige Zeile in der ListBox anzeigt, so dass ich diese dann ggf. bearbeiten kann.

diesen Wert gibt es in deiner Liste gar nicht. Welche Zeile soll denn da gefunden werden?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#10
Das war in dem Falle nur ein Beispiel. 
Es sollte halt immer möglich sein die Spalte anzuzeigen zwischen denen der Wert liegen könnte. 
Alternativ kann man auch sagen: suche mir die Nummer, wenn Nummer nicht vorhanden, dann suche die nächst kleinere / nächst größere.
Aber dass man zumindest schon mal in die Nähe der möglichen Nummer kommt und nicht ewig lang in der Liste selbst danach suchen muss.

Grüße
Naitscho
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste