Excel / VBA - A Najít hledání s vícenásobným návratem
- V některých situacích je nutné znát všechny podrobnosti o zjištěných událostech.
- Toho je dosaženo pomocí níže uvedené funkce.
Ve veřejném modulu
'Retourne toutes les adresses trouvées dans la recherche' WkbN = nominace na classeur, avec cette donnée la fonction peut être mise dans un xla 'WksN = nom na laguně' Plage = les coordonnées de la plage à parcourir. 'Retour dans le tableau donner en argument. Funkce RechFind (ByVal Cle jako řetězec, ByVal WkbN jako řetězec, ByVal WksN jako řetězec, ByVal Plage jako řetězec, ByRef TBadress () jako varianta) As Long Dim Cherche, Ix As Long, PrAddress Se sešity (WkbN) .Sheets (WksN) .Range (Plage) Set Cherche = .Find (Cle) Pokud není Cherche nic, pak PrAddress = Cherche.Address Do ReDim Zachovat TBadress (Ix) TBadress (Ix) = Cherche.Address Set Cherche = .FindNext (Cherche) Ix = Ix + 1 Loop Zatímco není Cherche nic a Cherche.Address PrAddress Konec If End S 'nombre d'occurence (s) trouvée (s), Retour 0 si aucune výskyt RechFind = Ix Set Cherche = Nic' Libére la mémoire occupée par l ' objet. Funkce End
Přidat do sešitu Xla.
Použití makra
Sub RechMulti () Dim R jako dlouhý, TB () Dim i jako celé číslo R = RechFind ("12 *", ThisWorkbook.Name, "Feuil1", "B1: B500", TB ()) Pokud R> 0 pak pro i = 0 Do R - 1 'ou ubound (TB)' Vzorové listy ("Feuil1") Buňky (i + 4, 5) = Rozsah (TB (i)) Řádek Následující i Konec Pokud Konec Sub
Pomocí tlačítka volání
Private Sub CommandButton1_Click () Dim R jako dlouhý, TB () Dim i jako celé číslo ("E4: E20") ClearContents R = RechFind (rozsah ("E2"), ThisWorkbook.Name, ActiveSheet.Name, Range ("B1 : B500 ") Adresa, TB ()) Pokud R> 0 Pak Pro i = 0 až R - 1 'ou ubound (TB)' Vzorové listy (" Feuil1 ") Buňky (i + 4, 5) = Rozsah ( TB (i)) Řádek Další i Konec Pokud Konec Sub
Stažení
Stáhněte si testovací sešit: zde.