Finn tekst i en streng (INSTR -funksjon) - eksempler på VBA -kode

INSTR Funksjon

VBA Instr -funksjonen sjekker om det finnes en tekststreng i en annen tekststreng. Den returnerer 0 hvis teksten ikke blir funnet. Ellers returnerer den tegnposisjonen der teksten er funnet.

Instr -funksjonen utfører nøyaktig fyrstikker. VBA Like Operator kan i stedet brukes til å utføre unøyaktige treff / mønstermatching ved hjelp av jokertegn.

Instr Eksempel

Den følgende kodebiten søker etter ordet "Look" i strengen "Look in this string". Instr -funksjonen returnerer 1 fordi teksten er funnet i den første posisjonen.

123 Sub FindSomeText ()MsgBox InStr ("Se i denne strengen", "Se")Slutt Sub

Dette andre eksemplet returnerer 7 fordi teksten finnes fra den sjuende posisjonen:

123 Sub FindSomeText2 ()MsgBox InStr ("Ikke se i denne strengen", "Se")Slutt Sub

Viktig! Instr -funksjonen er store og små bokstaver som standard. Dette betyr at "look" ikke vil matche med "Look". For å gjøre testen ufølsom for lest, les nedenfor.

Instr Syntax

Syntaksen for Instr -funksjonen er som følger:

1 Instr ([start], streng, delstreng, [sammenligne])

[start] (valgfritt) - Dette valgfrie argumentet er startposisjonen for søket. Skriv inn 1 for å begynne å søke fra posisjon 1 (eller la det stå tomt). Skriv inn 5 for å begynne å søke fra posisjon 5. Viktig! INSTR -funksjonen beregner tegnposisjonen ved å telle fra 1 IKKE fra [start] -posisjonen.

streng - Tekststrengen du vil søke i.

delstreng - Tekststrengen du finner i hovedstrengen.

[sammenligne] (valgfritt) - Som standard er Instr store og små bokstaver. Ved å angi dette argumentet kan du gjøre Instr Case ufølsom:

Argument vb Verdi

Argument Heltall Beskrivelse
vbBinaryCompare

0

(Standard) Saksfølsom

vbTextCompare

1

Ikke store og små bokstaver

vbDatabaseCompare

2

Bare MS -tilgang. Bruker informasjon i databasen for å utføre sammenligning.

Startposisjon

Startposisjonen Instr lar deg angi tegnposisjonen hvor du skal begynne søket. Husk imidlertid at Instr -utgangen alltid teller fra 1.

Her setter vi startposisjonen til 3 for å hoppe over den første B:

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

Resultatet er 6 fordi den andre B er det sjette tegnet i strengen.

Saken-ufølsom INSTR-test

Som standard behandler VBA “L” forskjellig fra “l”. Med andre ord er VBA store og små bokstaver. Dette gjelder for alle tekstfunksjoner. For å gjøre VBA uvesentlige, setter du [sammenligne] -argumentet til 1 eller vbTextCompare.

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

Alternativt kan du legge til Option Compare Text øverst i kodemodulen:

1 Alternativ Sammenlign tekst
12345 Alternativ Sammenlign tekstOffentlig Sub FindText_IgnoreCase2 ()MsgBox InStr ("Ikke se i denne strengen", "se")Slutt Sub

Alternativ Sammenlign tekst vil påvirke hele koden i den modulen. Jeg personlig plasserer dette øverst i en hvilken som helst modul som omhandler tekst fordi jeg aldri bryr meg om saksforskjeller.

InstrRev -funksjon

Instr -funksjonen søker fra venstre. I stedet kan du søke fra høyre ved hjelp av InstrRev -funksjonen. InstrRev -funksjonen fungerer veldig likt Instr -funksjonen.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Se i denne strengen", "Se")Slutt Sub

Akkurat som Instr -funksjonen vil dette returnere 1 fordi det bare er en forekomst av "Look" i teksten. Men hvis vi legger til et nytt "Look", ser du at det returnerer posisjonen til "Look" til høyre:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Se i denne strengen Look", "Look")Slutt Sub

Deretter vil vi gå gjennom flere Instr -eksempler.

InString -eksempler

Hvis String inneholder Substring

Her vil vi bruke en If -setning for å teste om en streng inneholder en delstreng av tekst:

123456789 Offentlig Sub FindSomeText ()Hvis InStr ("Se i denne strengen", "se") = 0 DaMsgBox "Ingen kamp"EllersMsgBox "Minst en kamp"Slutt omSlutt Sub

Finn tekststrenge i en celle

Du kan også finne en streng i en celle:

12345 Sub Find_String_Cell ()If InStr (Range ("B2"). Value, "Dr.")> 0 ThenOmråde ("C2"). Verdi = "lege"Slutt omSlutt Sub

Eller gå gjennom en rekke celler for å teste om cellene inneholder tekst:

12345678910 Sub Search_Range_For_Text ()Dim cell As RangeFor hver celle i området ("b2: b6")Hvis InStr (cell.Value, "Dr.")> 0 Dacell.Offset (0, 1) .Value = "Doctor"Slutt omNeste celleSlutt Sub

Finn posisjonen til et tegn i en streng

Denne koden finner posisjonen til et enkelt tegn i en streng og tildeler posisjonen til en variabel:

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

Søk etter streng i Word

Denne koden vil søke etter en streng etter et ord:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Her ser du her", "Se")Hvis n = 0 DaMsgBox "Ordet ble ikke funnet"EllersMsgBox "Ordet funnet i posisjon:" & nSlutt omSlutt Sub

Hvis variabel inneholder streng

Denne koden vil teste om en strengvariabel inneholder en tekststreng:

12345678 Sub Variable_Contains_String ()Dim str As Stringstr = "Se her"Hvis InStr (str, "Her")> 0 DaMsgBox "Her funnet!"Slutt omSlutt Sub

Instr og venstre funksjon

Instr kan brukes sammen med andre tekstfunksjoner som Venstre, Høyre, Len og Midt for å trimme tekst.

Med Venstre -funksjonen kan du skrive ut teksten før en tekststreng:

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

Bruke Instr i Microsoft Access VBA

Alle eksemplene ovenfor fungerer nøyaktig det samme i Access VBA som i Excel VBA.

For å lære mer, les artikkelen vår: VBA -tekstfunksjoner

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave