Excel / VBA - Eine Suche mit Mehrfachrückgabe

Eine einfache Suche gibt die erste Koordinate zurück.
  • In einigen Situationen ist es erforderlich, alle Details der gefundenen Vorkommen zu kennen.
  • Dies wird mit der folgenden Funktion erreicht.

In einem öffentlichen Modul

 "Retourne toutes les adresses trouvées dans la recherche" WkbN = nom du classeur, avec cette donnée la fonction peutre mise dans un xla "WksN = nom de la feuille" Plage = les coordonnées de la plage à parcourir. Zurück in der Diskussion. Funktion RechFind (ByVal Cle als String, ByVal WkbN als String, ByVal WksN als String, ByVal Plage als String, ByRef TBadress () als Variante) As Long Dim Cherche, Ix As Long, PrAddress With Workbooks (WkbN) .Sheets (WksN) .Range (Plage) Set Cherche = .Find (Cle) Wenn nicht Cherche ist nichts dann PrAddress = Cherche.Address Do ReDim Erhalten TBadress (Ix) TBadress (Ix) = Cherche.Address Set Cherche = .FindNext (Cherche) Ix = Ix + 1 Schleife, während nicht Cherche ist nichts und Cherche.Adresse PrAdresse Ende, wenn Ende mit 'Anzahl der Vorkommen (s), Zurück 0 und Vorkommen RechFind = Ix Set Cherche = Nichts' Libére la mémoire occupée par l ' objet. Funktion beenden 

Hinzufügen zu einer Xla-Arbeitsmappe.

Verwenden eines Makros

 Sub RechMulti () Dim R As Long, TB () Dim i As Integer R = RechFind ("12 *", ThisWorkbook.Name, "Feuil1", "B1: B500", TB ()) Wenn R> 0, dann For i = 0 bis R - 1 (TB) Beispielblätter ("Feuil1") Zellen (i + 4, 5) = Bereich (TB (i)) Zeile nächste i Ende wenn Ende Unter 

Verwenden einer Anruftaste

 Private Sub CommandButton1_Click () Dim R As Long, TB () Dim i As Integer-Bereich ("E4: E20"). ClearContents R = RechFind (Bereich ("E2"), ThisWorkbook.Name, ActiveSheet.Name, Bereich ("B1 : B500 "). Adresse, TB ()) Wenn R> 0, dann für i = 0 bis R - 1 (TB) Beispielblätter (" Feuil1 "). Zellen (i + 4, 5) = Bereich ( TB (i)). Zeile Nächste i End If End Sub 

Herunterladen

Laden Sie das Test-Arbeitsbuch hier herunter.

Vorherige Artikel Nächster Artikel

Top-Tipps