Find tekst i en streng (INSTR -funktion) - VBA -kodeeksempler

INSTR -funktion

VBA Instr -funktionen kontrollerer, om der findes en tekststreng i en anden tekststreng. Det returnerer 0, hvis teksten ikke findes. Ellers returnerer den tegnpositionen, hvor teksten findes.

Instr -funktionen udfører eksakt Tændstikker. VBA Like Operator kan i stedet bruges til at udføre unøjagtige kampe / mønstermatchning ved hjælp af jokertegn.

Instr Eksempel

Følgende kodestykke søger efter ordet "Look" i strengen "Look in this string". Instr -funktionen returnerer 1, fordi teksten findes i den første position.

123 Sub FindSomeText ()MsgBox InStr ("Se i denne streng", "Look")Afslut Sub

Dette andet eksempel returnerer 7, fordi teksten findes fra den 7. position:

123 Sub FindSomeText2 ()MsgBox InStr ("Se ikke i denne streng", "Look")Afslut Sub

Vigtig! Instr -funktionen er store og små bogstaver som standard. Dette betyder, at "look" ikke matcher med "Look". For at gøre testen ufølsom over for læsningen nedenfor.

Instr Syntaks

Syntaksen for Instr -funktionen er som følger:

1 Instr ([start], string, substring, [sammenligne])

[start] (valgfrit) - Dette valgfrie argument er søgningens startposition. Indtast 1 for at starte søgningen fra position 1 (eller lad feltet stå tomt). Indtast 5 for at starte søgningen fra position 5. Vigtig! INSTR -funktionen beregner tegnpositionen ved at tælle fra 1 IKKE fra [start] -positionen.

snor - Tekststrengen, der skal søges i.

substring - Tekststrengen, der skal findes i den primære streng.

[sammenlign] (valgfrit) - Som standard er Instr store og små bogstaver. Ved at angive dette argument kan du gøre Instr Case ufølsom:

Argument vb Værdi

Argument Heltal Beskrivelse
vbBinaryCompare

0

(Standard) Etui-følsom

vbTextCompare

1

Ikke store og små bogstaver

vbDatabaseCompare

2

Kun MS -adgang. Bruger information i databasen til sammenligning.

Start startposition

Startpositionen Instr giver dig mulighed for at angive karakterpositionen, hvor du vil starte din søgning. Husk dog, at Instr -output altid tæller fra 1.

Her sætter vi startpositionen til 3 for at springe den første B over:

123 Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")Afslut Sub

Resultatet er 6, fordi det andet B er det 6. tegn i strengen.

Etu-ufølsom INSTR-test

Som standard behandler VBA "L" forskelligt fra "l". Med andre ord er VBA store og små bogstaver. Dette gælder for alle tekstfunktioner. For at gøre VBA uafhængig af store og små bogstaver skal du indstille [sammenligne] -argumentet til 1 eller vbTextCompare.

123 Offentlig sub FindText_IgnoreCase ()MsgBox InStr (1, "Don't Look in this string", "look", vbTextCompare)Afslut Sub

Alternativt kan du tilføje Option Compare Text til toppen af ​​dit kodemodul:

1 Mulighed Sammenlign tekst
12345 Mulighed Sammenlign tekstOffentlig sub FindText_IgnoreCase2 ()MsgBox InStr ("Se ikke i denne streng", "se")Afslut Sub

Option Compare Text påvirker hele koden i det pågældende modul. Jeg placerer dette personligt øverst i ethvert modul, der beskæftiger sig med tekst, fordi jeg aldrig bekymrer mig om sagsforskelle.

InstrRev -funktion

Instr -funktionen søger fra venstre. I stedet kan du søge fra højre ved hjælp af InstrRev -funktionen. InstrRev -funktionen fungerer meget på samme måde som Instr -funktionen.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Se i denne streng", "Look")Afslut Sub

Ligesom Instr -funktionen returnerer dette 1, fordi der kun er et eksempel på "Look" i teksten. Men hvis vi tilføjer et andet "Look", vil du se, at det returnerer placeringen af ​​det "mest udseende" til højre:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Se i denne streng Look", "Look")Afslut Sub

Dernæst vil vi gennemgå flere Instr -eksempler.

InString -eksempler

Hvis String indeholder Substring

Her vil vi bruge en If -sætning til at teste, om en streng indeholder en delstreng af tekst:

123456789 Offentlig sub FindSomeText ()Hvis InStr ("Look in this string", "look") = 0 HerefterMsgBox "Ingen match"AndetMsgBox "Mindst en kamp"Afslut HvisAfslut Sub

Find tekststreng i en celle

Du kan også finde en streng i en celle:

12345 Sub Find_String_Cell ()Hvis InStr (område ("B2"). Værdi, "Dr.")> 0 DerefterOmråde ("C2"). Værdi = "Læge"Afslut HvisAfslut Sub

Eller gå gennem en række celler for at teste, om cellerne indeholder noget tekst:

12345678910 Sub Search_Range_For_Text ()Dim celle som områdeFor hver celle i området ("b2: b6")Hvis InStr (cell.Value, "Dr.")> 0 Dereftercell.Offset (0, 1) .Value = "Doctor"Afslut HvisNæste celleAfslut Sub

Find positionen for en karakter i en streng

Denne kode finder placeringen af ​​et enkelt tegn i en streng og tildeler positionen til en variabel:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Se her", "L")Afslut Sub

Søg streng til Word

Denne kode vil søge i en streng efter et ord:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Se her", "Se")Hvis n = 0 SåMsgBox "Ordet blev ikke fundet"AndetMsgBox "Ord fundet i position:" & nAfslut HvisAfslut Sub

Hvis variabel indeholder streng

Denne kode tester, om en strengvariabel indeholder en tekststreng:

12345678 Sub Variable_Contains_String ()Dim str Som strengstr = "Se her"Hvis InStr (str, "Her")> 0 SåMsgBox "Her fundet!"Afslut HvisAfslut Sub

Instr og den venstre funktion

Instr kan bruges sammen med andre tekstfunktioner som Venstre, Højre, Len og Midt til at trimme tekst.

Med funktionen Venstre kan du udsende teksten før en tekststreng:

1234567891011 Sub Instr_Left ()Dim str Som strengDim n As Longstr = "Se her"n = InStr (str, "Her")MsgBox Venstre (str, n - 1)Afslut Sub

Brug af Instr i Microsoft Access VBA

Alle ovenstående eksempler fungerer nøjagtig det samme i Access VBA som i Excel VBA.

For at lære mere, læs vores artikel: VBA -tekstfunktioner

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave