Nájsť text v reťazci (funkcia INSTR) - Príklady kódu VBA

Funkcia INSTR

Funkcia VBA Instr kontroluje, či sa v inom reťazci textu nachádza reťazec textu. Ak text nenájdete, vráti hodnotu 0. V opačnom prípade vráti pozíciu znaku, kde sa nachádza text.

Funkcia Instr funguje presný zápasy. Namiesto toho je možné použiť operátor VBA Like na vykonávanie nepresných zhody / zhody vzorov pomocou zástupných znakov.

Príklad príkladu

Nasledujúci útržok kódu hľadá v slove „Pozrite“ v reťazci „Pozrite sa do tohto reťazca“. Funkcia Instr vráti hodnotu 1, pretože text sa nachádza na prvej pozícii.

123 Sub FindSomeText ()MsgBox InStr („Pozrite sa do tohto reťazca“, „Pozrite“)Koniec pod

Tento druhý príklad vracia 7, pretože text sa nachádza od 7. pozície:

123 Sub FindSomeText2 ()MsgBox InStr („Nepozerať v tomto reťazci“, „Pozrieť“)Koniec pod

Dôležité! Funkcia Instr je rozlišujú sa malé a veľké písmená predvolene. To znamená, že „vzhľad“ sa nebude zhodovať s „vzhľad“. Aby test nerozlišoval malé a veľké písmená, prečítajte si nižšie.

Syntax inštr

Syntax funkcie Instr je nasledovná:

1 Instr ([štart], reťazec, podreťazec, [porovnať])

[štart] (voliteľné) - Tento voliteľný argument je počiatočnou pozíciou vyhľadávania. Zadajte 1, čím spustíte vyhľadávanie z pozície 1 (alebo nechajte pole prázdne). Zadajte 5, aby ste začali hľadať z pozície 5. Dôležité! Funkcia INSTR počíta polohu znaku počítaním od 1 NIE z polohy [štart].

reťazec - Reťazec textu, v ktorom sa má hľadať.

podreťazec - Reťazec textu, ktorý sa má nájsť v primárnom reťazci.

[porovnať] (voliteľné) - V predvolenom nastavení Instr rozlišuje veľké a malé písmená. Nastavením tohto argumentu môžete spôsobiť, že Instr Case nebude citlivý:

Hodnota argumentu vb

Celé číslo argumentu Popis
vbBinaryCompare

0

(Predvolené) Rozlišujú sa malé a veľké písmená

vbTextCompare

1

Nerozlišuje malé a veľké písmená

vbDatabaseCompare

2

Len MS prístup. Na porovnanie používa informácie v databáze.

Začiatočná pozícia

Počiatočná pozícia Instr vám umožňuje určiť pozíciu znaku, na ktorom budete hľadať. Nezabúdajte však, že výstup Instr bude vždy počítať od 1.

Tu nastavíme počiatočnú pozíciu na 3, aby sme preskočili prvú B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, „ABC ABC“, „B“)Koniec pod

Výsledok je 6, pretože druhé B je 6. znak v reťazci.

Test INSTR, ktorý nerozlišuje malé a veľké písmená

VBA štandardne zaobchádza s „L“ odlišne od „l“. Inými slovami, VBA rozlišuje veľké a malé písmena. To platí pre všetky textové funkcie. Aby VBA nerozlišovala malé a veľké písmena, nastavte argument [porovnať] na 1 alebo vbTextCompare.

123 Public Sub FindText_IgnoreCase ()MsgBox InStr (1, „Nehľadajte v tomto reťazci“, „hľadajte“, vbTextCompare)Koniec pod

Prípadne môžete pridať text na porovnanie možností do hornej časti modulu kódu:

1 Možnosť Porovnať text
12345 Možnosť Porovnať textPublic Sub FindText_IgnoreCase2 ()MsgBox InStr („Nepozerajte sa do tohto reťazca“, „hľadajte“)Koniec pod

Možnosť Porovnať text ovplyvní celý kód v tomto module. Osobne to umiestňujem na začiatok každého modulu, ktorý sa zaoberá textom, pretože ma nikdy nezaujímajú rozdiely medzi prípadmi.

Funkcia InstrRev

Funkcia Instr hľadá zľava. Namiesto toho môžete hľadať sprava pomocou funkcie InstrRev. Funkcia InstrRev funguje veľmi podobne ako funkcia Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev („Pozrite sa do tohto reťazca“, „Pozrite“)Koniec pod

Rovnako ako funkcia Instr vráti 1, pretože v texte je iba jedna inštancia „Look“. Ak však pridáme druhé „pozretie“, uvidíte, že vráti pozíciu „najvhodnejšieho vzhľadu“:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev („Pozrite sa v tomto reťazci Pozrite sa“, „Pozrite“)Koniec pod

Ďalej preskúmame ďalšie príklady Instr.

Príklady reťazcov

Ak reťazec obsahuje podreťazec

Tu použijeme príkaz If na testovanie, či reťazec obsahuje podreťazec textu:

123456789 Public Sub FindSomeText ()Ak InStr („Pozrite sa do tohto reťazca“, „pozrite sa“) = 0 PotomMsgBox „Žiadna zhoda“InakMsgBox „Minimálne jeden zápas“Koniec AkKoniec pod

Nájdite textový reťazec v bunke

V bunke môžete nájsť aj reťazec:

12345 Sub Find_String_Cell ()Ak je InStr (rozsah („B2“). Hodnota, „Dr.“)> 0 PotomRozsah („C2“). Hodnota = „Doktor“Koniec AkKoniec pod

Alebo môžete prejsť rozsahom buniek a otestovať, či bunky obsahujú nejaký text:

12345678910 Sub Search_Range_For_Text ()Dim bunka ako rozsahPre každú bunku v rozsahu („b2: b6“)Ak je InStr (cell.Value, "Dr.")> 0 Potombunka.Offset (0, 1). Hodnota = "Doktor"Koniec AkĎalšia bunkaKoniec pod

Nájdite polohu postavy v reťazci

Tento kód nájde pozíciu jedného znaku v reťazci a priradí pozíciu premennej:

1234 Sub Find_Char ()Dim n As Longn = InStr („Tu sa pozrite sem“, „L“)Koniec pod

Vyhľadávací reťazec pre Word

Tento kód vyhľadá slovo v reťazci:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr („Tu sa pozrite sem“, „Pozrite“)Ak n = 0 PotomMsgBox „Slovo sa nenašlo“InakMsgBox „Slovo nájdené na pozícii:“ & nKoniec AkKoniec pod

Ak premenná obsahuje reťazec

Tento kód otestuje, či reťazcová premenná obsahuje reťazec textu:

12345678 Vedľajšia premenná_obsahuje_reťazec ()Dim str Ako reťazecstr = "Pozrite sa sem"Ak je InStr (str, „Tu“)> 0, potomMsgBox „Tu nájdete!“Koniec AkKoniec pod

Funkcia Instr a Left

Instr je možné použiť spolu s ďalšími textovými funkciami, ako je ľavý, pravý, lenný a stredný, na orezanie textu.

Pomocou funkcie Vľavo môžete odoslať text pred reťazec textu:

1234567891011 Sub Instr_Left ()Dim str Ako reťazecDim n As Longstr = "Pozrite sa sem"n = InStr (str, „tu“)MsgBox vľavo (str, n - 1)Koniec pod

Použitie Instr v programe Microsoft Access VBA

Všetky vyššie uvedené príklady fungujú v programe Access VBA úplne rovnako ako v programe Excel VBA.

Ak sa chcete dozvedieť viac, prečítajte si náš článok: Textové funkcie VBA

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave