FIND-funktion i VBA: Hvordan bruger man den?

ønsker at lære at bruge FIND-funktion i VBA🇧🇷 Så er du det rigtige sted!

Hvem kender ikke SØG-muligheden i Excel? Hvis du har arbejdet med Excel i et stykke tid, har du sikkert brugt SØG-funktionen eller den populære Ctrl + L-genvejstast til at finde et ord eller et stykke indhold, du vil søge efter i hele dit regneark. ligesom hele projektbogen.

I VBA har vi også en funktion kaldet FIND, der kan hjælpe os med at finde den værdi, vi leder efter.

Følg detaljerne nedenfor for at lære mere om denne funktion gennem praktiske eksempler.

Hvordan fungerer FIND-funktionen i VBA?

Excel VBA FIND-funktionen søger efter en bestemt værdi inden for et specifikt område. Søger efter den første forekomst af denne værdi, og hvis den findes, returnerer funktionen den celle, der indeholder den. Men hvis der ikke findes noget match, returnerer funktionen intet. VBA FIND-funktionen kan returnere et nøjagtigt eller delvist match.

For eksempel søger følgende kode efter teksten "San Pablo» i intervallet A1: A10 i "Arbejdsark 1🇧🇷

With Sheets("Sheet1").Range("A1:A10")
Indstil Rng = .Find(What:="São Paulo")

Formålet med at bruge FIND-funktionen i VBA er at finde den ønskede værdi i et givent datasæt. Med en VBA-kode kan du automatisere opgaven med at finde værdier i Excel.

Syntaks for VBA FIND-funktion

Syntaksen for VBA FIND-funktionen er erklæret som følger:

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

hvor:

udtryk: er områdeobjektet, som går forud for FIND-funktionen i VBA-koden. Søgeområdet kan være en eller flere rækker, kolonner eller hele regnearket. Funktionen VBA FIND accepterer følgende argumenter:

  • Hvad: Dette er værdien at kigge efter. Det kan være numerisk, tekstmæssigt eller enhver anden Excel-datatype. Dette argument er det samme som Find-indstillingen i "finde og erstatte" fra Excel.
  • derefter: Angiver den celle, hvorfra søgningen starter. Den indtastes som en enkelt cellereference. Hvis dette argument udelades, begynder søgningen efter cellen i øverste venstre hjørne af det angivne søgeområde.
  • Kig ind: Dette er det sted (eller data), hvor værdien skal slås op. Det kan være en kommentar (xlComments), en formel (xlFormulas) eller en værdi (xlValues). Standardværdien for dette argument er xlFormulas. Dette argument er også det samme som Find-indstillingen i "finde og erstatte" fra Excel.
  • Se: Dette argument bestemmer, om hele celleindholdet skal matches (nøjagtigt match) eller en del af celleindholdet (delvis match). Konstanterne er xlWhole og xlPart for henholdsvis eksakte og delvise match. Standardværdien for dette argument er xlPart.
  • Søgerækkefølge: Dette argument foreslår søgerækkefølgen. Du kan angive, om søgningen skal være i rækker (xlByRows) eller kolonner (xlByColumns). Standardværdien for dette argument er xlByRows. Dette argument er også det samme som Find-indstillingen i "finde og erstatte" fra Excel.
  • Søg adresse: Angiver den adresse, hvor søgningen vil blive udført. Du kan søge ned eller til næste celle med xlNext-konstanten. Alternativt kan du søge baglæns (op) eller i den forrige celle med xlPrevious-konstanten. Standardværdien for dette argument er xlNext.
  • Match tilfælde: Dette argument afgør, om søgningen skal skelne mellem store og små bogstaver eller ej. Hvis søgningen skelner mellem store og små bogstaver, er dette argument angivet som sandt (TRUE), ellers er det falsk (FALSE). Standardværdien for dette argument er False.
  • MatchByte: Dette argument skal bruges, hvis nogen har installeret eller valgt dobbeltbyte sprogunderstøttelse. Skal angives som sand, hvis dobbeltbytetegn skal matche dobbeltbytetegn. Skal angives som falsk, hvis dobbeltbyte-tegn skal matches med deres enkeltbyte-ækvivalenter.
  • søgeformat: Angiver, om værdien, der skal søges efter, skal være i et bestemt format (såsom fed eller kursiv) eller ej. Hvis opslagsværdien skal følge en formateringsteknik, er dette argument angivet som sandt, ellers falsk. Standardværdien af ​​dette argument er falsk (FALSE).

bare argumentet qué nødvendig. De øvrige argumenter er valgfrie.

Funktionen FIND returnerer et af følgende resultater:

  • Hvis der findes et match, returnerer funktionen den første celle, hvor værdien er fundet.
  • Hvis der ikke findes noget match, returnerer funktionen intet. Dette skyldes, at funktionsobjektet er sat til ingenting.

Alternativt, hvis der ikke findes noget match, angives en brugerdefineret meddelelse via beskedboks funktion kan returneres (se kodeeksempler nedenfor).

Bemærk 1: Søgningen starter efter den celle, der er angivet i argumentet. derefter og fortsætter til den sidste celle i søgeområdet. Hvis værdien ikke findes før denne sidste celle, starter søgningen igen fra den første celle i søgeområdet til den celle, der er angivet i argumentet. derefter🇧🇷

Derfor er cellen angivet i argumentet derefter det søges efter i slutningen af ​​søgeprocessen. For flere detaljer om brugen af ​​argumentet derefterse det andet eksempel i denne artikel.

Bemærk 2: Hver gang VBA FIND-funktionen bruges, vil kig ind🇧🇷 Se på🇧🇷 søgerækkefølge y MatchByte Hvis disse værdier udelades næste gang funktionen bruges, vil Excel derfor bruge de tidligere gemte værdier. Derfor anbefales det eksplicit at angive de angivne argumenter, når søgningen udføres ved hjælp af VBA FIND-funktionen.

Hvordan bruger man FIND-funktionen i Excel VBA?

For at du kan forstå brugen af ​​FIND-funktionen i VBA, har vi adskilt nogle praktiske eksempler nedenfor.

Eksempel 1: Valg af cellen med den første forekomst af søgeværdien

Antag i dette første eksempel, at du har en liste, der indeholder nogle navne som vist på billedet nedenfor, og du vil gennemse og vælge den celle, der indeholder navnet. pedro🇧🇷

Følg disse trin derfra:

1. Få adgang til guiden udvikler 🇧🇷 visuel grundlæggende🇧🇷 (Hvis du ikke har fanen Udvikler aktiveret i din Excel, tjek her trin for trin).

udviklerguide

begge. På VBA-skærmen skal du vælge det ønskede regneark fra menuen til venstre. I dette eksempel vil vi vælge Arbejdsark 1 som er det regneark, der indeholder listen over navne.

3. Når du har valgt det ønskede regneark, skal du i området til højre indtaste koden nedenfor:

Vælg cellen med den første forekomst af den søgte værdi

Sub LocateName()
Range("A1:A10").Find(What:="Peter").Vælg
End Sub
  • Bemærk i koden ovenfor, at vi nævnte det område, vi leder efter (A1: A10🇧🇷
  • Efter at have nævnt området, indsæt et punktum (.) og skriv FIND🇧🇷
  • Vores første argument er, hvad vi leder efter. For at fremhæve argumentet kan vi videregive argumentet hvad:=dette vil være nyttigt til at identificere, hvilken parameter vi henviser til.
  • Den sidste del er efter at finde ordet, hvad vi vil gøre. Vi skal vælge ordet, så send argumentet som .Vælg🇧🇷
  • Kør derefter denne kode med tasten F5 eller manuelt som vist på billedet nedenfor for at vælge den første celle, der indeholder navnet pedro🇧🇷

lokaliseres i VBA

Eksempel 2: Vælg cellen med den anden forekomst af søgeværdien

I dette andet eksempel skal du bemærke, at det følgende billede indeholder nogle navne i området A1:A10. Bemærk at navnet "pedro” vises to gange i kolonne A.

Vælg cellen med den anden forekomst

I dette tilfælde ønsker vi at søge og vælge anden hændelse af navnet "Peter" i kolonne A (det vil sige celle A7). For at gøre dette bruger vi følgende kode:

FIND anden forekomst af VBA

Sub LocateName()
Range("A1:A10").Find(What:="Peter", After:=Range("A2")).Vælg
End Sub

Bemærk i koden ovenfor, at søgningen starter efter celle A2 og fortsætter til den sidste celle i kolonne A. Dette skyldes, at søgeområdet blev angivet som kolonne A (A1:A10).

Så da søgningen starter i celle A3, vil værdien "pedro” er i cellen A7 giver"regneark 2🇧🇷 Derfor vil celle A7 blive valgt af FIND-funktionen, når koden udføres.

Hvis navnet «pedro” ikke var blevet fundet i celle A3 før den sidste celle i kolonne A, ville søgningen igen starte ved celle A1 og slutte ved celle A2 denne gang. Derfor er cellen angivet i argumentet "derefter” søges efter lige i slutningen af ​​søgeprocessen.

Eksempel 3: Find tekst ved at angive nogle af dens tegn

For at søge efter tekst ved kun at angive en del af den, skal du indtaste argumentet Se på som xlDel eller udelad dette argument. Som standard matcher FIND-funktionen tegnene i søgeværdien mod hele strengen. Det returnerer derefter cellen, der indeholder hele denne streng.

Se på eksemplet nedenfor:

Sub LocateName()
Range("A1:A10").Find(What:="Ped", LookAt:=xlPart).Vælg
End Sub

Denne kode leder efter tegnene "Ped” i området A1:A25 i “Sheet3”. Cellen, der indeholder værdien, returneres, som er navngivet delvis korrespondance🇧🇷 Så uanset om søgeværditegnene er placeret i begyndelsen, midten eller slutningen af ​​strengen, returnerer Excel VBA et match.

observation: konstanten xlDel det kan udelades fra koden, fordi det er standardværdien for FIND-funktionen. Men hvis dette argument er angivet, skal du sørge for, at det ikke er omgivet af dobbelte anførselstegn.

Eksempel 4: At finde tekst i en kommentar

Du kan også bruge VBA FIND-funktionen til at finde tekst i en cellekommentar i Excel.

For en bedre forståelse, tag et kig på eksemplet nedenfor, hvor vi har et regneark, der indeholder tre celler med kommentarer (angivet med de røde trekanter). Ud fra dette ønsker vi at finde teksten "betalt provision” placeret i en af ​​kommentarerne. I dette tilfælde vil vi bruge følgende kode:

Sub LocateComment()
Range("A1:B10").Find(What:="Kommission betaler", LookIn:=xlComments).Vælg
End Sub

Find tekst i kommentaren

Som et resultat vil Excel kun vælge den celle, der indeholder kommentaren, hvis tekst er angivet i vores kode.

Eksempel 5: Fejlhåndtering i FIND-funktionen i VBA

Hvis den tekst, vi leder efter, ikke er inden for det givne interval, vil VBA returnere en fejl som vist nedenfor:

error 91

For at undgå denne fejl kan vi bruge en kode som vist nedenfor:

Sub LocateName()
Svagt resultat som variant

On Error Resume Next
Range("A1:A10").Find(What:="Cristina").Vælg
På Fejl GoTo 0

Resultat = ActiveCell.Value

Hvis Resultat = "" Så
MsgBox "Værdien du leder efter er ikke tilgængelig i det angivne område!"
Exit Sub
End If

End Sub

Bemærk i koden ovenfor, at hvis VBA finder værdien, vil den vise den fundne værdi, ellers vil den vise meddelelsen som "Den værdi, du leder efter, er ikke tilgængelig i det givne interval🇧🇷

For flere tips om, hvordan du løser VBA-fejl, tjek artiklen: Excel VBA-fejl: alt hvad du behøver at vide!

Detaljer at huske

  • FIND-funktionen er en del af RANGE-egenskaben, og du bør bruge FIND efter kun at have valgt området.
  • I FIND-funktionen er det første argument (qué), plus alt andet er valgfrit.
  • Finder du værdien efter en bestemt celle, kan du nævne cellen i parameteren derefter af søgesyntaksen.

Download regnearket her indeholder eksemplerne præsenteret i denne øvelse.

Se også følgende Excel-tip:

Så hvad synes du om FIND-funktionen i VBA? Hvis du har spørgsmål, så læg din kommentar nedenfor. Se også flere Excel- og VBA-tips på vores hjemmeside!

Tommy Banks
Vi vil blive glade for at høre, hvad du synes

Efterlad et Svar

TechnoBreak | Tilbud og anmeldelser
Logo
Aktivér registrering i indstillinger - generelt
Indkøbsvogn