Inhoudsopgave
Een van de belangrijkste en meest gebruikte functies die we gebruiken in Visual Basic-toepassing (VBA) is de zoekfunctie. In dit artikel laat ik je zien hoe je de FIND-functie van Excel met goede voorbeelden en illustraties.
Download Praktijk Werkboek
Zoekfunctie in VBA in Excel.xlsm6 snelle voorbeelden van het gebruik van de VIND-functie in VBA
Hier hebben we een dataset met de Boeknamen, Auteurs en Prijzen van enkele boeken van een boekhandel genaamd Martin Bookstore.
Vandaag is ons doel verschillende soorten gebruik van de Zoek functie van VBA van deze gegevensverzameling.
1. De functie Zoeken in VBA gebruiken zonder parameter
U kunt de Zoek functie van VBA zonder parameters.
Dan zal het zoeken naar een specifieke waarde binnen een bereik van cellen en de eerste gevonden overeenkomst teruggeven.
Laten we zoeken naar de naam "P. B. Shelly" in de kolom Auteur ( C4:C13 ).
De lijn met de Zoek functie zal zijn:
Set cell = Range("C4:C17").Find("P. B. Shelly")
De volledige VBA-code zal zijn:
⧭ VBA-code:
Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub
⧭ Uitgang:
Het produceert een Macro genaamd Zoek Als u de Macro uitvoert, zal deze het volgende opleveren $C$6 het eerste celadres met de naam P. B. Shelly .
Lees meer: Zoeken binnen een bereik met VBA in Excel: inclusief exacte en gedeeltelijke overeenkomsten
2. De functie Zoeken in VBA toepassen met de parameter Na (om te beginnen met zoeken in een specifieke cel)
U kunt de Na parameter met de Zoek functie in VBA Dan gaat het zoeken naar een waarde onder een cel binnen een bereik.
Laten we bijvoorbeeld gaan zoeken naar de naam "P. B. Shelly" van onder de cel C6 .
De regel code zal zijn:
Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))
En de volledige VBA-code zal zijn:
⧭ VBA-code:
Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6")) MsgBox cell.Address End Sub
⧭ Uitgang:
Het zal terugkeren $C$13 omdat het begint te zoeken van onder de cel C6 dat is van de cel C7 Dus het wordt P. B. Shelly in de cel C13 eerst.
Lees meer: String in een cel zoeken met VBA in Excel
3. De zoekfunctie in VBA uitvoeren met wrapping rond de afterparameter (om in een cirkel naar een waarde te zoeken)
De Na parameter met de Zoek functie zoekt een waarde op een cirkelvormige manier
Dat wil zeggen, het begint te zoeken van onder een cel binnen een bereik, eindigt met zoeken in het bereik, en begint dan weer van bovenaf.
Laten we bijvoorbeeld beginnen met het zoeken naar de naam "John Keats" van onder de cel C8 met behulp van de Na parameter.
De regel code zal zijn:
Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))
En de volledige VBA-code zal zijn:
⧭ VBA-code:
Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8")) MsgBox cell.Address End Sub
⧭ Uitgang:
Het zal terugkeren $C$7 omdat het begint te zoeken van onder de cel C8 dat is van de cel C9 .
Het vindt niets tot aan de cel C13 dus het begint weer bij cel C4 en vindt er een in cel C7 .
Vergelijkbare lezingen:
- String zoeken met VBA in Excel (8 voorbeelden)
- Exacte overeenkomst vinden met VBA in Excel (5 manieren)
- Zoeken en vervangen met VBA (11 manieren)
4. Gebruik de zoekfunctie in VBA met de LookAt Parameter (voor een exacte of gedeeltelijke overeenkomst).
U kunt de Zoek functie in VBA met de LookAt parameter.
Gebruik LookAt = xlWhole voor een Exact wedstrijd, en LookAt=xlPart voor een Gedeeltelijk wedstrijd.
Laten we bijvoorbeeld proberen uit te zoeken of er een boek bestaat met de naam "Ode" in de Naam van het boek kolom ( B4:B13 ).
Als we xlWhole in de regel code:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)
De uitvoer zal een fout tonen omdat er geen exact wedstrijd.
Maar als je gebruikt:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)
Dan zal het terugkeren $B$9 want er is een boek met de naam "Ode" in het in cel B7 Ode aan de nachtegaal.
Dus de volledige code voor de gedeeltelijk wedstrijd is:
⧭ VBA-code:
Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub
5. De zoekfunctie in VBA bedienen met de parameter SearchDirection (om de richting van het zoeken op te geven)
U kunt ook de Zoek functie in VBA met de Zoekrichting parameter.
Gebruik Zoekrichting = xlNext voor het zoeken van Van boven naar beneden .
En Zoekrichting = xlVorige voor het zoeken van Van onder naar boven .
Laten we bijvoorbeeld proberen de Auteur te vinden Elif Shafak in de kolom Auteur ( C4:C13 ).
Als we xlNext in de regel code:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)
Dan zal het terugkeren $C$5 .
Maar als je gebruikt:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)
Dan zal het terugkeren $C$11 .
Dus de volledige code voor het zoeken van van onder naar boven is:
⧭ VBA-code:
Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub
6. Zoekfunctie in VBA met parameter MatchCase (voor hoofdlettergevoelige of ongevoelige overeenkomst)
Ten slotte kunt u de Zoek functie met de MatchCase parameter.
Gebruik MatchCase = True voor een hoofdlettergevoelig wedstrijd , en MatchCase=False voor een hoofdletterongevoelig wedstrijd.
Laten we bijvoorbeeld proberen het boek te vinden "moeder" in de Naam van het boek kolom ( B4:B13 ).
Als we True gebruiken in de regel code:
Set cell = Range("B4:B13").Find("mother", MatchCase:=True)
De uitvoer zal een fout tonen omdat er geen overeenkomst wordt gevonden.
Maar als je gebruikt:
Set cell = Range("B4:B13").Find("mother", MatchCase:=False)
Dan zal het terugkeren $B$9 omdat er een boek is met de naam "Moeder" in de cel B8 .
Dus de volledige code voor de hoofdletterongevoelig wedstrijd is:
⧭ VBA-code:
Sub Find() Set cell = Range("B4:B13").Find("Mother", MatchCase:=False) MsgBox cell.Address End Sub
Conclusie
Met deze methoden kunt u de functie Zoeken gebruiken in Visual Basic toepassingen. Hebt u vragen? Stel ze ons gerust.