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