Funkcia Excel VBA InStr
Instr vo VBA sa používa na zistenie polohy daného podreťazca v reťazci po zadaní metódy porovnania s funkciou. Pre túto funkciu existujú štyri rôzne spôsoby porovnania, Instr je funkcia reťazca, ale výstup vrátený funkciou je numerické, takže výstup tejto funkcie je v celočíselnej premennej.
Reťazec vo VBA nie je nič iné ako sled znakov, tj všetky texty, ktoré sú dodávané s úvodzovkami, sú považované za reťazce. Funkcia InStr je vstavaná textová funkcia používaná na manipuláciu s reťazcami. Napríklad - Ak chcete z vety extrahovať podreťazec alebo ak chcete použiť zmeny vzoru písma na konkrétny reťazec v rade znakov, alebo ak chcete nájsť pozíciu znaku a mnoho ďalších možností, môžete: použite InStr.

Syntax

Má 4 argumenty, ako je znázornené na obrázku nižšie.
- (Štart): Toto nie je povinné. Toto je číselná hodnota, ktorú musíme určiť, z ktorej pozície reťazca začne funkcia Instr hľadať zadaný text. Napríklad: ak chcete vyhľadať znak "a" v slove "Bangalore" od 3 rd pozíciu, nemusí nám povedať funkciu Instr východiskovú pozíciu 3. So od 3 rd pozíciu, charakter "a" je v 5. ročníku polohy. Ak tento parameter ignorujete, predvolená hodnota je 1.
- Reťazec 1: Toto je skutočný reťazec, ktorý dodávame, tj z tohto textu sa snažíme nájsť podreťazec. Napríklad, ak hľadáte reťazec „a“ v „Bangalore“, reťazec 1 v Bangalore.
- Reťazec 2: Toto nie je nič iné ako reťazec, ktorý hľadáme. Ak napríklad hľadáte reťazec „a“ v slove „Bangalore“, reťazec 2 je a .
- (Porovnať): Toto je opäť voliteľný argument. V argumente (porovnanie) sú k dispozícii tri druhy možností.

- vbBinaryCompare: Toto nie je nič iné ako vyhľadávanie podreťazca (reťazca 2) v reťazci 1, ktoré rozlišuje veľké a malé písmená. Napríklad, ak hľadáme „a“ v slove „Bangalore“, výsledok Instr vráti 2 a ak hľadajú výraz „A“ v slove „Bangalore“, funkcia Instr vráti 0 ako výsledok, pretože zadaný reťazec je veľká hodnota.
Ako argument môžeme uviesť aj nulu (0).
vbTextCompare: Toto nerozlišuje veľké a malé písmená v reťazci 2 v reťazci 1. Napríklad, ak hľadáme „a“ v slove „Bangalore“, výsledok by inštr vrátil ako výsledok 2 a ak hľadáte „ A v slove „Bangalore“, Instr vráti tiež číslo 2. Logika je A = a, B = b, C = c atď.….
Ako argument môžeme uviesť aj jeden (1).
vbDatabaseCompare: Používa sa na porovnanie informácií z vašej databázy, tj. databázy Microsoft Access.
Ako argument môžeme uviesť aj jednu (-1).
Top 5 príkladov použitia funkcie VBA Instr
Príklad č
Začnime prvým príkladom. V slove Bangalore vyhľadajte polohu postavy a.
Nasledujúci kód vykoná túto úlohu za nás.
Kód:
Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub
Teraz spustite vyššie uvedený kód VBA pomocou klávesu F5 alebo tento kód môžete spustiť aj manuálne, ako je to znázornené na nasledujúcom obrázku obrazovky.

Výkon:

Príklad č
Teraz v slove Bangalore nájdite pozíciu znaku „a“ z tretej polohy.
Nasledujúci kód vykoná túto úlohu za nás.
Kód:
Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub
Na spustenie vyššie uvedeného kódu môžete použiť kláves F5 alebo môžete tento kód spustiť aj manuálne, ako je to znázornené na nižšie uvedenej snímke obrazovky.

Výkon:

Na vyššie uvedenom obrázku sa pozrite na rozdiel od predchádzajúceho kódu. Pretože sme spomenuli východiskovú pozíciu znaku ako 3, ignoroval sme prvý znak „a“ na 2. pozícii.
Príklad č
Teraz uvidíme vyhľadávanie malých a veľkých písmen. V slove Bangalore nájdite písmeno „A.“
Na tento účel musíme dodať argument porovnania ako vbBinaryCompare.
Kód:
Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub
Teraz tento kód spustite pomocou klávesu F5, alebo ho môžete spustiť aj manuálne.

Výkon:

Since we have supplied the compare argument as vbBinaryCompare Instr function returned the result as zero because there are no uppercase letter “A” exists.
Example #4
Now we will see one more case sensitive search. In the word Bangalore, find the letter “A.” The previous example returned the result as zero.
In order to overcome the case sensitive approach here, we need to supply the compare argument as vbTextCompare.
Code:
Sub Instr_Example4() Dim i As Variant i = InStr(1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub
Now Run, this code using the F5 Key, or you can also run this code manually.

Output:

Example #5
Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.
For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.
Code:
Sub To_Hide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.
Code:
Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember
- Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
- If you are searching for case sensitive character, you need to supply the (compare) argument as, by default, VBA takes this as the argument even if you do not supply.
- Instr je funkcia VBA, takže ju nemôžete použiť v hárku programu Excel ako iné vstavané vzorce.
- Ak funkcia nemôže nájsť reťazec 2, bude výsledok nulový.