Sådan bruger du Find-funktionen i VBA (6 eksempler)

  • Del Dette
Hugh West

En af de vigtigste og mest udbredte funktioner, som vi bruger i Visual Basic-applikation (VBA) er funktionen Find. I denne artikel viser jeg dig, hvordan du kan bruge funktionen FIND-funktion af Excel med gode eksempler og illustrationer.

Download arbejdsbog til øvelser

Find funktion i VBA i Excel.xlsm

6 hurtige eksempler på brug af FIND-funktionen i VBA

Her har vi et datasæt med Navne på bøger, forfattere og Priser af nogle bøger fra en boghandel ved navn Martin Bookstore.

I dag er det vores mål at se forskellige typer af anvendelser af Find funktion VBA fra dette datasæt.

1. Brug Find-funktionen i VBA uden parameter

Du kan bruge Find funktion VBA uden parametre.

Derefter søger den efter en bestemt værdi inden for et område af celler og returnerer det første match, den finder.

Lad os søge efter navnet "P. B. Shelly" i kolonnen Forfatter ( C4:C13 ).

Linjen med den Find funktion vil være:

Set cell = Range("C4:C17").Find("P. B. Shelly")

Den komplette VBA-kode vil være:

VBA-kode:

 Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub 

Output:

Det giver en Makro kaldet Find Hvis du kører makroen, vil den returnere $C$6 , den første celleadresse med navnet P. B. Shelly .

Læs mere: Find i et område med VBA i Excel: Inklusive nøjagtige og delvise matchninger

2. Anvend Find-funktionen i VBA med parameteren Efter (for at starte søgning fra en bestemt celle)

Du kan bruge Efter parameter med parameteren Find funktion VBA Derefter begynder den at søge efter en værdi under en celle inden for et område.

Lad os f.eks. begynde at søge efter navnet "P. B. Shelly" fra nedenstående celle C6 .

Koderækken vil være:

Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))

Og den komplette VBA-kode vil være:

VBA-kode:

 Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))) MsgBox cell.Address End Sub 

Output:

Den vil returnere $C$13 fordi den begynder at søge fra neden under celle C6 , det er fra celle C7 . så det bliver P. B. Shelly i celle C13 først.

Læs mere: Sådan finder du String i en celle ved hjælp af VBA i Excel

3. Kør Find-funktionen i VBA med Wrapping omkring After-parameteren (for at søge efter en værdi på en cirkulær måde)

Efter parameter med parameteren Find funktion søger efter en værdi på en cirkulær måde

Det vil sige, at den starter med at søge under en celle i et område, afslutter søgningen i området og starter igen fra toppen af området.

Lad os f.eks. begynde at søge på navnet "John Keats" fra nedenstående celle C8 ved hjælp af Efter parameter.

Koderækken vil være:

Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))

Og den komplette VBA-kode vil være:

VBA-kode:

 Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))) MsgBox cell.Address End Sub 

Output:

Den vil returnere $C$7 fordi den begynder at søge fra neden under celle C8 , det er fra celle C9 .

Den finder ikke noget op til celle C13 , så den starter igen fra celle C4 og finder en i celle C7 .

Lignende læsninger:

  • Sådan finder du en streng med VBA i Excel (8 eksempler)
  • Find nøjagtig match ved hjælp af VBA i Excel (5 måder)
  • Sådan finder og erstatter du ved hjælp af VBA (11 måder)

4. Brug Find-funktionen i VBA med LookAt-parameteren (til nøjagtig eller delvis match)

Du kan bruge Find funktion VBA med den LookAt parameter.

Brug LookAt = xlWhole for en Præcis og, og LookAt=xlPart for en Delvis match.

Lad os f.eks. prøve at finde ud af, om der findes en bog med navnet "Ode" i den Bogens navn kolonne ( B4:B13 ).

Hvis vi bruger xlHele i den pågældende kodelinje:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)

Udgangen vil vise en fejl, fordi den ikke finder nogen nøjagtig match.

Men hvis du bruger:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)

Derefter vender den tilbage $B$9 , fordi der findes en bog med navnet "Ode" i den i celle B7 , Ode til nattergalen.

Så den komplette kode for delvis er:

VBA-kode:

 Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub 

5. Betjen Find-funktionen i VBA med SearchDirection-parameteren (for at angive søgningens retning)

Du kan også bruge Find funktion VBA med den SearchDirection parameter.

Brug SearchDirection = xlNext til søgning fra Fra top til bund .

Og SearchDirection = xlPrevious til søgning fra Fra bund til top .

Lad os f.eks. prøve at finde forfatteren Elif Shafak i kolonnen Forfatter ( C4:C13 ).

Hvis vi bruger xlNæste i den pågældende kodelinje:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)

Derefter vil den returnere $C$5 .

Men hvis du bruger:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)

Derefter vender den tilbage $C$11 .

Så den komplette kode til søgning fra fra bund til top er:

VBA-kode:

 Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub 

6. Find-funktion i VBA med MatchCase-parameteren (til case-sensitive eller insensitive match)

Endelig kan du bruge Find funktion med den MatchCase parameter.

Brug MatchCase = True for en skraldefølsom match , og MatchCase=False for en skift mellem store og små bogstaver match.

Lad os f.eks. prøve at finde bogen "mor" i den Bogens navn kolonne ( B4:B13 ).

Hvis vi bruger True i kodelinjen:

Set cell = Range("B4:B13").Find("mother", MatchCase:=True)

Udgangen vil vise en fejl, fordi den ikke finder nogen match.

Men hvis du bruger:

Set cell = Range("B4:B13").Find("mother", MatchCase:=False)

Derefter vender den tilbage $B$9 fordi der findes en bog ved navn "Mor" i celle B8 .

Så den komplette kode for skift mellem store og små bogstaver er:

VBA-kode:

 Sub Find() Set cell = Range("B4:B13").Find("Mother", MatchCase:=False) MsgBox cell.Address End Sub 

Konklusion

Ved hjælp af disse metoder kan du bruge Find-funktionen i Visual Basic-applikationen. Har du spørgsmål? Du er velkommen til at spørge os.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.