Anzeige
Archiv - Navigation
1620to1624
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
VBA_Findnext Methode nicht gefunden
24.04.2018 07:31:38
ChrisJeh
Findet jemand den Fehler? - Findnext , Objekt wird nicht gefunden
Private Sub CommandButton1_Click()
'Wir definieren im ersten Schritt die die aktuelle Position des
'jeweiligen Treffers enthält.
'Sowie die Variable PLZ. Sie wird die Position des ersten Treffers
'enthalten
Dim rngcellPLZ As Range
Dim PLZ As String
'Hintergrundfarben entfernen
Tabelle1.UsedRange.Interior.Color = xlNone
'Es werden die Spalten A - Z der Tabelle 1 durchsucht.
With Tabelle1.Range("a:z")
'Im ersten Schritt leeren wir die Ergebnistabelle
UserForm1.ListBox1.Clear
'Mit der Find Methode bilden wir letztendlich die Standardsuche aus Excel in VBA nach.
'Die Syntax lautet wie folgt:
'Ausdruck .Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase,  _
MatchByte, SearchFormat)
'Kurze Erläuterung zu den Komponenten:
'What = Was wollen wir suchen? (erforderlich)
'After = Wird hier nichts angegeben, beginnt die Suche in der liken oberen Ecke des  _
Bereiches.
'        Ansonsten, falls angegeben beginnt die Suche NACH dieser Zelle beginnt. ( _
optional)
'LookIN = Der Informationstyp (optional)
'LookAt = xlWhole oder xlPart, also nach einer "genauen" Suche oder auch nach  _
Teilbegriffen (optional)
'SearchOrder = xlByRows oder xlByColumns (optional)
'SearchDirection = Suchrichtung (optional)
'MatchCase = Groß oder Kleinschreibung beachten? Dann True, ansonsten False (optional)
'Wir werden hier in unserem Beispiel die einzige Erforderliche Komponente, What.
Set rngcellPLZ = .Find(UserForm1.TextBox1)
'Sollte die Methode keinen Treffer finden gibt sie "Nothing" zurück. Mit not....Nothing  _
werten wir den Treffer
'aus.
If Not rngcellPLZ Is Nothing Then
'Die Variable PLZ wird mit der Position des Treffers 1. Treffers belegt.
'Wenn der angebene Bereich durchsucht wurde, würde die Suche wieder von vorne  _
beginnen.
'Deshalb müssen wir unserer Do Loop Schleife einen Austritt mitteilen. Dies wird spä _
ter PLZ sein.
PLZ = rngcellPLZ.Address
'Mit einer Do Loop Schleife werden die Treffer abgearbeitet.
Do
'Jetzt befüllen wir die Listbox mit den Treffern.
With UserForm1.ListBox1
With UserForm1.ListBox1
'Spaltenanzahl
.ColumnCount = 6 '-- eine Spalte mehr
'Item hinzufügen
.AddItem
'Unser Treffer (hier die Postleitzahl)
.List(.ListCount - 1, 0) = rngcellPLZ.Value
'Der dazugehörige Städtename eine Spalte rechts neben dem Treffer, deshalb . _
_
Offset(0, 1)
.List(.ListCount - 1, 1) = rngcellPLZ.Offset(0, 1).Value
'Und zu guter Letzt noch die Zelle des Treffers.
.List(.ListCount - 1, 2) = rngcellPLZ.Offset(0, 2).Value
'4. Spalte'
.List(.ListCount - 1, 3) = rngcellPLZ.Offset(0, 4).Value
'5. Spalte'
.List(.ListCount - 1, 4) = rngcellPLZ.Offset(0, 27).Value
'--neu--6. Spalte eintragen der Zeilennummer
.List(.ListCount - 1, 5) = rngcellPLZ.Row
'Die Treffer werden mit einem grünen Hintergrund belegt.
rngcellPLZ.Interior.Color = vbGreen
rngcellPLZ.Offset(0).Interior.Color = vbGreen
'Definition der Spaltenbreite
.ColumnWidths = "1,5cm;1,5cm;1,5cm;2,0cm;2,0cm"
End With
'mit .FindNext springen wir zum nächsten Treffer der Suche.
Set rngcellPLZ = .FindNext(rngcellPLZ)
'Die Schleife soll solange arbeiten wie Treffer vorhanden sind.
'Wie aber oben bereits erwähnt würde der Suchlauf wieder von vorne beginnen,  _
deshalb
'soll die Schleife austreten wenn PLZ, also der erste Treffer, wieder erreicht  _
wurde
Loop While Not rngcellPLZ Is Nothing And rngcellPLZ.Address  PLZ
End If
End With
'Bevor die Prozedur beendet wird lassen wir uns noch die Treffer auf einem Label anzeigen.
Label1.Caption = ListBox1.ListCount & " Treffer"
If ListBox1.ListCount = 1 Then
Application.Goto Tabelle1.Range(ListBox1.List(0, 5))
End If
End Sub
'Bei Klick auf einen Treffer soll diese Zelle in der Tabelle ausgewählt werden
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'--auslesen der Zeilennummer in Spalte 6
Cells(ListBox1.List(ListBox1.ListIndex, 5), 1).Select
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA_Findnext Methode nicht gefunden
24.04.2018 08:26:00
Nepumuk
Hallo Chris,
du hast die Zeile:
With UserForm1.ListBox1
doppelt im Code.
Gruß
Nepumuk
AW: VBA_Findnext Methode nicht gefunden
24.04.2018 10:58:43
snb
2*Suchen = Filter (Autofilter oder Advanced Filter)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen