FIND-functie in VBA: hoe deze te gebruiken?

wil leren hoe te gebruiken FIND-functie in VBA馃嚙馃嚪 Dan ben je hier aan het goede adres!

Wie kent de ZOEK-optie in Excel niet? Als je al een tijdje met Excel werkt, heb je waarschijnlijk de functie ZOEK of de populaire sneltoets Ctrl + L gebruikt om een 鈥嬧媤oord of stuk inhoud te vinden waarnaar je wilt zoeken in je hele werkblad. zoals de hele werkmap.

Ook hebben we in VBA een functie genaamd FIND die ons kan helpen de waarde te vinden waarnaar we op zoek zijn.

Volg de onderstaande details om meer over deze functie te leren door middel van praktische voorbeelden.

Hoe werkt de FIND-functie in VBA?

De Excel VBA FIND-functie zoekt naar een specifieke waarde binnen een bepaald bereik. Zoekt naar de eerste keer dat die waarde voorkomt, en indien gevonden, retourneert de functie de cel die deze bevat. Als er echter geen overeenkomst wordt gevonden, retourneert de functie niets. De VBA FIND-functie kan een exacte of gedeeltelijke overeenkomst retourneren.

De volgende code zoekt bijvoorbeeld naar de tekst "San Pablo禄 in het interval A1: A10 in "Werkblad1????????

Met bladen("Sheet1").Bereik("A1:A10")
Stel Rng = .Find(What:="S茫o Paulo") in

Het doel van het gebruik van de FIND-functie in VBA is om de gewenste waarde in een bepaalde dataset te vinden. Met een VBA-code kunt u de taak van het vinden van waarden in Excel automatiseren.

VBA FIND-functie Syntaxis

De syntaxis van de VBA FIND-functie wordt als volgt gedeclareerd:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

D贸nde:

uitdrukking: is het bereikobject, dat voorafgaat aan de FIND-functie in de VBA-code. Het zoekbereik kan een of meer rijen, kolommen of de hele spreadsheet zijn. De VBA FIND-functie accepteert de volgende argumenten:

  • Qu茅: Dit is de waarde waarnaar moet worden gezocht. Het kan numeriek, tekstueel of een ander Excel-gegevenstype zijn. Dit argument is hetzelfde als de optie Zoeken van de "zoek en vervang鈥漸it Excel.
  • dan: Geeft de cel aan van waaruit de zoekopdracht zal starten. Het wordt ingevoerd als een enkele celverwijzing. Als dit argument wordt weggelaten, begint de zoekopdracht na de cel in de linkerbovenhoek van het opgegeven zoekbereik.
  • Kijk in: Dit is de locatie (of data) waar de waarde moet worden opgezocht. Dit kan een opmerking (xlComments), een formule (xlFormulas) of een waarde (xlValues) zijn. De standaardwaarde voor dit argument is xlFormulas. Dit argument is ook hetzelfde als de optie Zoeken van de "zoek en vervang鈥漸it Excel.
  • Kijken: Dit argument bepaalt of de volledige celinhoud overeenkomt (exacte overeenkomst) of een deel van de celinhoud (gedeeltelijke overeenkomst). De constanten zijn xlWhole en xlPart voor respectievelijk exacte en gedeeltelijke overeenkomsten. De standaardwaarde voor dit argument is xlPart.
  • Zoekvolgorde: Dit argument suggereert de zoekvolgorde. U kunt aangeven of er in rijen (xlByRows) of kolommen (xlByColumns) moet worden gezocht. De standaardwaarde voor dit argument is xlByRows. Dit argument is ook hetzelfde als de optie Zoeken van de "zoek en vervang鈥漸it Excel.
  • Zoek adres: Geeft het adres aan waarop de zoekopdracht zal worden uitgevoerd. U kunt omlaag of naar de volgende cel zoeken met de constante xlNext. U kunt ook achteruit (omhoog) of in de vorige cel zoeken met de constante xlPrevious. De standaardwaarde voor dit argument is xlNext.
  • Overeenkomen met zaak: Dit argument bepaalt of de zoekopdracht hoofdlettergevoelig moet zijn of niet. Als de zoekopdracht hoofdlettergevoelig is, wordt dit argument opgegeven als waar (TRUE), anders is het onwaar (FALSE). De standaardwaarde voor dit argument is False.
  • MatchByte: Dit argument moet worden gebruikt als iemand dubbel-byte taalondersteuning heeft ge茂nstalleerd of geselecteerd. Moet worden opgegeven als waar als dubbelbytetekens moeten overeenkomen met dubbelbytetekens. Moet als false worden opgegeven als dubbelbytetekens moeten worden vergeleken met hun enkelbyte-equivalenten.
  • zoek formaat: Geeft aan of de waarde waarnaar moet worden gezocht een specifieke indeling moet hebben (zoals vet of cursief) of niet. Als de opzoekwaarde een opmaaktechniek moet volgen, wordt dit argument opgegeven als waar, anders als onwaar. De standaardwaarde van dit argument is false (FALSE).

alleen de argumentatie kiezen nodig. De andere argumenten zijn optioneel.

De functie FIND retourneert een van de volgende resultaten:

  • Als er een overeenkomst wordt gevonden, retourneert de functie de eerste cel waarin de waarde is gevonden.
  • Als er geen overeenkomst wordt gevonden, retourneert de functie niets. Dit komt omdat het functieobject op niets is ingesteld.

Als er geen overeenkomst wordt gevonden, wordt er ook een aangepast bericht opgegeven via de berichtenbox functie kan worden geretourneerd (zie onderstaande codevoorbeelden).

1 Opmerking: De zoekopdracht begint na de cel die in het argument is opgegeven. Na en gaat door tot de laatste cel in het zoekbereik. Als de waarde pas in deze laatste cel wordt gevonden, begint het zoeken opnieuw vanaf de eerste cel in het zoekbereik tot aan de cel die is opgegeven in het argument. Na????????

Daarom is de cel opgegeven in het argument Na er wordt naar gezocht aan het einde van het zoekproces. Voor meer details over het gebruik van het argument Nazie het tweede voorbeeld in dit artikel.

2 Opmerking: Elke keer dat de VBA FIND-functie wordt gebruikt, wordt de kijk in???????? Mirar???????? zoekvolgorde y MatchByte Als deze waarden worden weggelaten wanneer de functie de volgende keer wordt gebruikt, gebruikt Excel daarom de eerder opgeslagen waarden. Daarom wordt aanbevolen om de opgegeven argumenten expliciet te declareren wanneer de zoekopdracht wordt uitgevoerd met de VBA FIND-functie.

Hoe gebruik ik de FIND-functie in Excel VBA?

Om u het gebruik van de FIND-functie in VBA te laten begrijpen, hebben we hieronder enkele praktische voorbeelden uitgesplitst.

Voorbeeld 1: de cel selecteren met de eerste keer dat de zoekwaarde voorkomt

Stel dat u in dit eerste voorbeeld een lijst hebt met een aantal namen, zoals weergegeven in de onderstaande afbeelding, en dat u wilt bladeren en de cel met de naam wilt selecteren. pedro????????

Volg vanaf daar deze stappen:

1. Toegang tot de gids ontwikkelaar ???????? visuele basis馃嚙馃嚪 (Als u het tabblad Ontwikkelaar niet hebt ingeschakeld in uw Excel, kijk hier stap voor stap).

ontwikkelaarshandleiding

dos. Selecteer op het VBA-scherm het gewenste werkblad in het menu aan de linkerkant. In dit voorbeeld selecteren we de Werkblad1 dat is het werkblad dat de lijst met namen bevat.

3. Nadat u het gewenste werkblad hebt geselecteerd, voert u in het gebied aan de rechterkant de onderstaande code in:

Selecteer de cel met de eerste keer dat de gezochte waarde voorkomt

Subzoeknaam()
Bereik("A1:A10").Zoeken(Wat:="Peter").Selecteren
End Sub
  • Merk op in de bovenstaande code dat we het bereik noemden waarnaar we op zoek waren (A1: A10????????
  • Plaats na het vermelden van het bereik een punt (.) en typ encontrar????????
  • Ons eerste argument is wat we zoeken. Om het argument te benadrukken, kunnen we het argument doorgeven wat:=dit zal nuttig zijn om te identificeren naar welke parameter we verwijzen.
  • Het laatste deel is na het vinden van het woord wat we willen doen. We moeten het woord selecteren, dus geef het argument door als Selecteer????????
  • Voer vervolgens deze code uit met behulp van de sleutel F5 of handmatig zoals weergegeven in de onderstaande afbeelding om de eerste cel met de naam te selecteren pedro????????

zoeken in VBA

Voorbeeld 2: selecteer de cel met de tweede keer dat de zoekwaarde voorkomt

Houd er in dit tweede voorbeeld rekening mee dat de volgende afbeelding enkele namen bevat in het bereik A1:A10. Merk op dat de naam "pedro鈥 verschijnt twee keer in kolom A.

Selecteer de cel met het tweede voorkomen

In dit geval willen we zoeken en selecteren tweede voorkomen van de naam "Peter" in kolom A (dat wil zeggen, cel A7). Hiervoor gebruiken we de volgende code:

ZOEK tweede exemplaar van VBA

Subzoeknaam()
Bereik("A1:A10").Zoeken(Wat:="Peter", After:=Bereik("A2")).Selecteer
End Sub

U ziet in de bovenstaande code dat de zoekopdracht begint na cel A2 en doorgaat tot de laatste cel in kolom A. Dit komt omdat het zoekbereik is opgegeven als kolom A (A1:A10).

Dus aangezien de zoekopdracht begint in cel A3, is de waarde "pedro' staat in de cel A7 van "Spreadsheet2馃嚙馃嚪 Daarom wordt cel A7 geselecteerd door de FIND-functie bij het uitvoeren van de code.

Als de naam 芦pedro鈥 pas in cel A3 was gevonden in de laatste cel in kolom A, zou de zoekopdracht opnieuw beginnen bij cel A1 en eindigen bij cel A2 deze keer. Daarom is de cel gespecificeerd in het argument "Na鈥 wordt direct aan het einde van het zoekproces gezocht.

Voorbeeld 3: zoek tekst door een aantal karakters op te geven

Voer het argument in om naar tekst te zoeken door slechts een deel ervan op te geven Mirar als xlDeel of laat dit argument achterwege. De functie FIND vergelijkt standaard de tekens in de zoekwaarde met de hele tekenreeks. Vervolgens wordt de cel geretourneerd die deze hele tekenreeks bevat.

Kijk naar het voorbeeld hieronder:

Subzoeknaam()
Bereik("A1:A10").Find(What:="Ped", LookAt:=xlPart).Selecteer
End Sub

Deze code zoekt naar de tekens "Ped鈥 in het bereik A1:A25 van 鈥淏lad3鈥. De cel die de waarde bevat, wordt geretourneerd en krijgt een naam gedeeltelijke correspondentie馃嚙馃嚪 Dus ongeacht of de zoekwaardetekens aan het begin, in het midden of aan het einde van de tekenreeks staan, Excel VBA retourneert een overeenkomst.

observatie: de constante xlDeel het kan uit de code worden weggelaten omdat het de standaardwaarde is van de FIND-functie. Maar als dit argument wordt opgegeven, zorg er dan voor dat het niet tussen dubbele aanhalingstekens staat.

Voorbeeld 4: tekst zoeken in een opmerking

U kunt ook de VBA FIND-functie gebruiken om tekst in een celcommentaar in Excel te vinden.

Bekijk voor een beter begrip het onderstaande voorbeeld waarin we een werkblad hebben met drie cellen met opmerkingen (aangegeven door de rode driehoeken). Hieruit willen we de tekst vinden "commissie betaald鈥滲evindt zich in een van de opmerkingen. In dit geval gebruiken we de volgende code:

SublocatieCommentaar()
Range("A1:B10").Find(What:="Commission Pays", LookIn:=xlComments).Selecteer
End Sub

Zoek tekst in opmerking

Als gevolg hiervan selecteert Excel alleen de cel met de opmerking waarvan de tekst in onze code is gespecificeerd.

Voorbeeld 5: Foutafhandeling in de FIND-functie in VBA

Als de tekst waarnaar we zoeken niet binnen het opgegeven bereik valt, retourneert VBA een fout zoals hieronder weergegeven:

91 error

Om deze fout te voorkomen, kunnen we een code gebruiken zoals hieronder weergegeven:

Subzoeknaam()
Dim resultaat als variant

On Error Resume Next
Bereik("A1:A10").Zoeken(Wat:="Cristina").Selecteren
On Error GoTo 0

Resultaat = ActiveCell.Value

Als Resultaat = "" Dan
MsgBox "De waarde die u zoekt is niet beschikbaar in het opgegeven bereik!"
Exit Sub
End If

End Sub

Merk op in de bovenstaande code dat als VBA de waarde vindt, het de gevonden waarde zal weergeven, anders zal het bericht worden weergegeven als "De waarde die u zoekt is niet beschikbaar in het opgegeven bereik????????

Raadpleeg het artikel voor meer tips over het oplossen van VBA-fouten: Excel VBA-fouten: alles wat u moet weten!

Details om te onthouden

  • De FIND-functie maakt deel uit van de RANGE-eigenschap en u moet FIND gebruiken nadat u alleen het bereik hebt geselecteerd.
  • In de FIND-functie is het eerste argument ( kiezen), plus al het andere is optioneel.
  • Als u de waarde na een specifieke cel vindt, kunt u de cel in de parameter vermelden Na van de zoeksyntaxis.

Download hier het rekenblad met de voorbeelden die in deze zelfstudie worden gepresenteerd.

Bekijk ook de volgende Excel-tips:

Dus wat vind je van de FIND-functie in VBA? Als je vragen hebt, laat dan hieronder je reactie achter. Bekijk ook meer Excel- en VBA-tips op onze website!

Tommy Banken
We horen graag wat je ervan vindt

Laat een antwoord achter

TechnoBreak | Aanbiedingen en beoordelingen
logo
Activeer registratie in instellingen - algemeen
Winkelmandje