AW: suchen & Übertrag in mehrspaltige Listbox
17.11.2006 12:39:14
PeterB
Hi Ahmadian,
Vorschlag: nicht nach Bereich suchen, sondern nach Zeilenindex, weil sich dies besser mit Einzelschritt kontrollieren läßt.
Private Sub cmdSuchen_Click()
Dim c_1 as long 'Column-Index erster Treffer
Dim c_n as long 'Column-Index Treffer allgemein
Dim r_1 as long 'Row-Index erster Treffer
Dim r_n as long 'Row-Index Treffer allgemein
Worksheets("Buchbestand").Activate
Listbox1.Clear 'Normieren von ListBox1
r_1 = 1
c_1 = 1
r_n = 1
c_n = 1
On Error Resume Next 'Selbst wenn nichts gefunden wird, läuft Programm weiter
r_n = Cells.Find(What:=txtSuchen.Text, After:=Cells(r_1, c_1), LookAt:=xlPart, _
SearchOrder:=xlByColumns).Row
Do While Err = 0 'diese Schleife nur, falls Treffer vorhanden
c_n = Cells.Find(What:=txtSuchen.Text, After:=Cells(r_1, c_1), LookAt:=xlPart, _
SearchOrder:=xlByColumns).Column 'dann auch Spalte ermitteln
If srSrcAct = srSrcBeg Then
Exit Do 'Ausstieg, wenn Anfang wieder erreicht
End If
If r_1 = 1 Then
r_1 = r_n
c_1 = c_n 'Festhalten der Koordinaten des ersten Treffers
End If
ListBox1.AddItem Cells(r_n, c_n).Value 'Hinzufügen zu Listenfeld
r_n = Cells.FindNext(After:=Cells(r_n, c_n)).Row
Loop
On Error GoTo 0
If ListBox1.ListCount = 0 Then MsgBox "..." 'Evtl. Meldung falls nichts gefunden.
End Sub
Wenn du auf die Zeile mit sheet.activate einen Haltepunkt setzt (F9) bleibt das Programm an dieser Zeile stehen und du kannst mit F8 (Einzelschritt) zeilenweise testen und sehen, was passiert und wie's passiert.
Dabei ist die Zeilen/Spalten-Lösung besser kontrollierbar als die Bereichs-Lösung.
Viel Glück
Peter