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