Indholdsfortegnelse
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.xlsm6 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 på VBA fra dette datasæt.
1. Brug Find-funktionen i VBA uden parameter
Du kan bruge Find funktion på 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 på 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 på 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 på 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.