Hitta text i en sträng (INSTR -funktion) - Exempel på VBA -kod

INSTR -funktion

VBA Instr -funktionen kontrollerar om en textsträng finns i en annan textsträng. Den returnerar 0 om texten inte hittas. Annars returnerar den teckenpositionen där texten finns.

Instr -funktionen utförs exakt tändstickor. VBA Like Operator kan istället användas för att utföra inexakta matchningar / mönstermatchning med hjälp av jokertecken.

Instr Exempel

Följande kodavsnitt söker efter ordet "Look" i strängen "Sök i den här strängen". Instr -funktionen returnerar 1 eftersom texten finns i den första positionen.

123 Sub FindSomeText ()MsgBox InStr ("Titta i den här strängen", "Titta")Avsluta Sub

Det andra exemplet returnerar 7 eftersom texten hittas från och med den sjunde positionen:

123 Sub FindSomeText2 ()MsgBox InStr ("Titta inte i den här strängen", "Titta")Avsluta Sub

Viktig! Instr -funktionen är skiftlägeskänsliga som standard. Det betyder att "look" inte kommer att matcha med "Look". För att göra testet okänsligt läs nedan.

Instr Syntax

Syntaxen för Instr -funktionen är följande:

1 Instr ([start], sträng, delsträng, [jämför])

[start] (valfritt) - Detta valfria argument är sökningens utgångsläge. Ange 1 för att börja söka från position 1 (eller lämna tomt). Ange 5 för att börja söka från position 5. Viktig! INSTR -funktionen beräknar teckenpositionen genom att räkna från 1 INTE från [start] -läget.

sträng - Textsträngen att söka i.

delsträng - Textsträngen som du hittar i den primära strängen.

[jämför] (valfritt) - Som standard är Instr skiftlägeskänslig. Genom att ställa in detta argument kan du göra Instr Case okänslig:

Argument vb Värde

Argument heltal Beskrivning
vbBinaryCompare

0

(Standard) skiftlägeskänslig

vbTextCompare

1

Inte skiftlägeskänslig

vbDatabaseCompare

2

Endast MS -åtkomst. Använder information i databasen för att utföra jämförelse.

Instr Startposition

Startpositionen Instr låter dig ange teckenpositionen där du ska börja din sökning. Tänk dock på att Instr -utgången alltid räknas från 1.

Här ställer vi startpositionen till 3 för att hoppa över den första B:

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

Resultatet är 6 eftersom det andra B är det sjätte tecknet i strängen.

INSTR-test som inte är skiftlägeskänsligt

Som standard behandlar VBA "L" som skiljer sig från "l". Med andra ord är VBA skiftlägeskänsligt. Detta gäller alla textfunktioner. För att göra VBA skiftlägeskänslig, ställ in [jämför] -argumentet till 1 eller vbTextCompare.

123 Public Sub FindText_IgnoreCase ()MsgBox InStr (1, "Don't Look in this string", "look", vbTextCompare)Avsluta Sub

Alternativt kan du lägga till Option Compare Text högst upp i kodmodulen:

1 Alternativ Jämför text
12345 Alternativ Jämför textPublic Sub FindText_IgnoreCase2 ()MsgBox InStr ("Titta inte i den här strängen", "titta")Avsluta Sub

Alternativ Jämför text påverkar hela koden i den modulen. Jag placerar detta personligen högst upp på en modul som handlar om text eftersom jag aldrig bryr mig om skillnader mellan fall.

InstrRev -funktion

Instr -funktionen söker från vänster. Istället kan du söka från höger med InstrRev -funktionen. InstrRev -funktionen fungerar mycket på samma sätt som Instr -funktionen.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Titta i den här strängen", "Titta")Avsluta Sub

Precis som Instr -funktionen kommer detta att returnera 1 eftersom det bara finns en instans av "Look" i texten. Men om vi lägger till en andra "Look" ser du att den returnerar positionen för "Look" till höger:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Look in this string Look", "Look")Avsluta Sub

Därefter kommer vi att granska fler Instr -exempel.

InString -exempel

Om sträng innehåller understräng

Här använder vi en If -sats för att testa om en sträng innehåller en delsträng med text:

123456789 Public Sub FindSomeText ()Om InStr ("Look in this string", "look") = 0 DåMsgBox "Ingen matchning"AnnanMsgBox "Minst en match"Avsluta omAvsluta Sub

Hitta textsträng i en cell

Du kan också hitta en sträng i en cell:

12345 Sub Find_String_Cell ()Om InStr (intervall ("B2"). Värde, "Dr.")> 0 SedanOmråde ("C2"). Värde = "Doktor"Avsluta omAvsluta Sub

Eller gå igenom ett cellintervall för att testa om cellerna innehåller text:

12345678910 Sub Search_Range_For_Text ()Dim cell As RangeFör varje cell i intervallet ("b2: b6")Om InStr (cell.Value, "Dr.")> 0 Dåcell.Offset (0, 1) .Value = "Doctor"Avsluta omNästa cellAvsluta Sub

Hitta position för ett tecken i en sträng

Denna kod hittar positionen för ett enda tecken i en sträng och tilldelar positionen till en variabel:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Här ser du här", "L")Avsluta Sub

Sök sträng efter Word

Den här koden söker efter ett ord i en sträng:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Här ser du här", "Titta")Om n = 0 DåMsgBox "Ordet hittades inte"AnnanMsgBox "Ord i position:" & nAvsluta omAvsluta Sub

Om variabel innehåller sträng

Denna kod testar om en strängvariabel innehåller en textsträng:

12345678 Sub Variable_Contains_String ()Dim str As Stringstr = "Titta här"Om InStr (str, "Här")> 0 DåMsgBox "Här hittat!"Avsluta omAvsluta Sub

Instr och den vänstra funktionen

Instr kan användas tillsammans med andra textfunktioner som vänster, höger, len och mitten för att trimma text.

Med funktionen Vänster kan du mata ut texten före en textsträng:

1234567891011 Sub Instr_Left ()Dim str As StringDim n As Longstr = "Titta här"n = InStr (str, "Här")MsgBox vänster (str, n - 1)Avsluta Sub

Använda Instr i Microsoft Access VBA

Alla ovanstående exempel fungerar exakt likadant i Access VBA som i Excel VBA.

För mer information, läs vår artikel: VBA -textfunktioner

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave