Szöveg keresése karakterláncban (INSTR függvény) - Példák a VBA kódokra

INSTR függvény

A VBA Instr függvény ellenőrzi, hogy nem található -e szöveg egy másik szövegben. 0 -t ad vissza, ha a szöveg nem található. Ellenkező esetben visszatér a karakter pozíciójához, ahol a szöveg megtalálható.

Az Instr funkció végrehajtja pontos gyufák. Ehelyett a VBA Like Operator használható pontatlan egyezések / minták egyeztetésére a helyettesítő karakterek használatával.

Instr példa

A következő kódrészlet a „Look in this string” karakterláncban keresi a „Look” szót. Az Instr függvény 1 -et ad vissza, mert a szöveg az első helyen található.

123 Sub FindSomeText ()MsgBox InStr ("Nézd meg ezt a karakterláncot", "Nézd")End Sub

Ez a második példa 7 -et ad vissza, mert a szöveg a 7. pozícióból indul ki:

123 Sub FindSomeText2 ()MsgBox InStr ("Ne nézz ebbe a karakterláncba", "Nézd")End Sub

Fontos! Az Instr függvény az Kis-nagybetű érzékeny alapértelmezés szerint. Ez azt jelenti, hogy a "megjelenés" nem egyezik a "Look" -al. A teszt kis- és nagybetűinek érzéketlenné tételéhez olvassa el alább.

Instr szintaxis

Az Instr függvény szintaxisa a következő:

1 Instr ([start], string, substring, [összehasonlítani])

[start] (nem kötelező) - Ez az opcionális érv a keresés kiindulópontja. Írja be az 1 -t a keresés elindításához az 1. pozícióból (vagy hagyja üresen). Írja be az 5 -öt a keresés elindításához az 5 -ös pozícióból. Fontos! Az INSTR függvény 1 -től számolva számítja ki a karakter pozícióját NEM a [start] pozícióból.

húr - A keresendő szövegsor.

allánc - Az elsődleges karakterláncban keresendő szöveg.

[összehasonlítás] (nem kötelező) - Az Instr alapértelmezés szerint megkülönbözteti a kis- és nagybetűket. Ha ezt az érvet állítja be, a kis- és nagybetűket nem lehet érzéketlenné tenni:

Argument vb Érték

Argument Integer Leírás
vbBinaryCompare

0

(Alapértelmezett) A kis- és nagybetűk megkülönböztetése

vbTextCompare

1

Nem különbözteti meg a kis- és nagybetűket

vbDatabaseCompare

2

Csak MS hozzáférés. Az adatbázisban szereplő információkat használja az összehasonlítás elvégzéséhez.

Instr. Kezdő pozíció

Az Instr start pozíció lehetővé teszi a karakter pozíciójának megadását, ahol elkezdi a keresést. Ne feledje azonban, hogy az Instr kimenet mindig 1 -től számít.

Itt a kezdő pozíciót 3 -ra állítjuk az első B kihagyásához:

123 Rész Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")End Sub

Az eredmény 6, mert a második B a karakterlánc 6. karaktere.

A kis- és nagybetűket nem érzékeny INSTR teszt

Alapértelmezés szerint a VBA az „L” betűt az „l” -től eltérően kezeli. Más szóval, a VBA megkülönbözteti a kis- és nagybetűket. Ez minden szövegfunkcióra igaz. A VBA kis- és nagybetűk megkülönböztetéséhez állítsa az [összehasonlítás] argumentumot 1-re vagy vbTextCompare értékre.

123 Nyilvános al FindText_IgnoreCase ()MsgBox InStr (1, "Ne nézz ebben a karakterláncban", "nézd", vbTextCompare)End Sub

Alternatív megoldásként hozzáadhatja a Szöveg összehasonlítása opciót a kódmodul tetejéhez:

1 Opció Szöveg összehasonlítása
12345 Opció Szöveg összehasonlításaNyilvános al FindText_IgnoreCase2 ()MsgBox InStr ("Ne nézz ebbe a karakterláncba", "nézd")End Sub

A Szöveg összehasonlítása opció hatással lesz az adott modul összes kódjára. Én személy szerint ezt helyezem minden szöveggel foglalkozó modul tetejére, mert soha nem érdekelnek az esetek közötti különbségek.

InstrRev függvény

Az Instr függvény balról keres. Ehelyett jobbról kereshet az InstrRev függvény használatával. Az InstrRev függvény nagyon hasonlóan működik, mint az Instr függvény.

123 Rész FindSomeText_FromRight ()MsgBox InStrRev ("Nézd meg ezt a karakterláncot", "Nézd")End Sub

Csakúgy, mint az Instr függvény, ez is 1 -et ad vissza, mert a szövegben csak egy „Look” példány található. De ha hozzáadunk egy második „Look” -t, akkor látni fogjuk, hogy az a jobb oldali „Look” pozícióját adja vissza:

123 Rész FindSomeText_FromRight ()MsgBox InStrRev ("Nézd meg ezt a karakterláncot", "Nézd")End Sub

Ezután további Instr -példákat tekintünk át.

InString példák

Ha a karakterlánc alstringet tartalmaz

Itt egy If utasítást használunk annak tesztelésére, hogy egy karakterlánc tartalmaz -e szövegrészeket:

123456789 Nyilvános alkeresőSomeText ()Ha InStr ("Nézd meg ezt a karakterláncot", "nézd") = 0 AkkorMsgBox "Nincs egyezés"MásMsgBox "Legalább egy mérkőzés"Vége HaEnd Sub

Szöveges karakterlánc keresése egy cellában

A cellában egy karakterláncot is találhat:

12345 Rész Find_String_Cell ()Ha InStr (Tartomány ("B2"). Érték, "Dr.")> 0 AkkorTartomány ("C2"). Érték = "Doktor"Vége HaEnd Sub

Vagy lapozzon végig egy sor cellán, és ellenőrizze, hogy a cellák tartalmaznak -e szöveget:

12345678910 Alkereső_tartomány_szöveg ()Homályos cella mint tartományA tartomány minden cellájához ("b2: b6")Ha InStr (cell.Value, "Dr.")> 0 Akkorcell.Offset (0, 1) .Value = "Doktor"Vége HaKövetkező cellaEnd Sub

Keresse meg a karakter pozícióját egy karakterláncban

Ez a kód megkeresi egy karakter pozícióját egy karakterláncban, és hozzárendeli a pozíciót egy változóhoz:

1234 Sub Find_Char ()Dim n Olyan hosszún = InStr ("Itt nézzen ide", "L")End Sub

Keresési karakterlánc a Word számára

Ez a kód egy karakterláncot keres egy szóra:

12345678910 Sub Search_String_For_Word ()Dim n Olyan hosszún = InStr ("Itt nézz ide", "Nézd")Ha n = 0 AkkorMsgBox "A szó nem található"MásMsgBox "A következő helyen található szó:" & nVége HaEnd Sub

Ha a változó karakterláncot tartalmaz

Ez a kód teszteli, hogy egy karakterlánc -változó tartalmaz -e szöveges karakterláncot:

12345678 Alváltozó_tartalmaz_string ()Dim str Mint karakterláncstr = "Nézd meg itt"Ha InStr (str, "Itt")> 0 AkkorMsgBox "Itt található!"Vége HaEnd Sub

Instr és a bal funkció

Az Instr más szövegfunkciókkal együtt használható, mint a Bal, Jobb, Len és Közép a szöveg kivágásához.

A Bal funkcióval a szöveget egy szövegsor előtt adhatja ki:

1234567891011 Rész Instr_Left ()Dim str Mint karakterláncDim n Olyan hosszústr = "Nézd meg itt"n = InStr (str, "Itt")MsgBox bal (str, n - 1)End Sub

Az Instr használata a Microsoft Access VBA -ban

A fenti példák mindegyike pontosan ugyanúgy működik az Access VBA -ban, mint az Excel VBA -ban.

Ha többet szeretne megtudni, olvassa el cikkünket: VBA szövegfüggvények

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave