Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten 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.
Antworten 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
Antworten 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)
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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