VBA InStr - 5 nejlepších příkladů použití funkce Excel VBA InStr

Funkce Excel VBA InStr

Instr ve VBA se používá k zjištění polohy daného podřetězce v řetězci poté, co zadáme metodu porovnání s funkcí, existují čtyři různé metody porovnání pro tuto funkci, Instr je funkce řetězce, ale výstup vrácený funkcí je numerický, takže výstup této funkce je v celočíselné proměnné.

Řetězec ve VBA není nic jiného než řada znaků, tj. Všechny texty dodávané s uvozovkami jsou považovány za řetězce. Funkce InStr je vestavěná textová funkce používaná k manipulaci s řetězci. Například - Chcete-li extrahovat podřetězec z věty nebo chcete-li použít změny designu písma na konkrétní řetězec v řadě znaků, nebo chcete-li najít pozici znaku a mnoho dalších možností, můžete použijte InStr.

Syntax

Má 4 argumenty, jak je znázorněno na následujícím obrázku.

  • (Start): Toto není povinné. Toto je číselná hodnota, kterou musíme určit, od které pozice řetězce funkce Instr začne hledat zadaný text. Například: pokud chcete vyhledat znak „a“ ve slově „Bangalore“ od 3 rd pozici, nemusí nám sdělit funkci Instr výchozí pozici 3. So od 3 rd pozici, charakter „a“ je v 5. ročníku polohy. Pokud tento parametr ignorujete, výchozí hodnota je 1.
  • Řetězec 1: Toto je skutečný řetězec, který dodáváme, tj. Z tohoto textu se snažíme najít dílčí řetězec. Například pokud hledáte řetězec „a“ v „Bangalore“, řetězec 1 v Bangalore.
  • Řetězec 2: Není to nic jiného než řetězec, který hledáme. Například pokud hledáte řetězec „a“ v „Bangalore“, String 2 je a .
  • (Porovnat): Toto je opět nepovinný argument. V argumentu (porovnat) jsou k dispozici tři druhy možností.
  • vbBinaryCompare: Toto není nic jiného než hledání malých a velkých písmen v řetězci (řetězec 2) v řetězci 1. Například pokud hledáme „a“ ve slově „Bangalore“, Instr vrátí jako výsledek 2 a pokud hledají „A“ ve slově „Bangalore“, Instr vrátí jako výsledek 0, protože zadaný řetězec je velká písmena.

Můžeme také dát nulu (0) jako argument.

vbTextCompare: Toto není hledání velkých a malých písmen řetězce 2 v řetězci 1. Například, když hledáme „a“ ve slově „Bangalore“, Instr vrátí jako výsledek 2 a pokud hledáte „ A ve slově „Bangalore“, Instr vrátí také 2. Logika je A = a, B = b, C = c atd.….

Můžeme také dát jeden (1) jako argument.

vbDatabaseCompare: Slouží k porovnání informací z vaší databáze, tj. databáze Microsoft Access.

Můžeme také dát jeden (-1) jako argument.

Top 5 příkladů použití funkce VBA Instr

Příklad č. 1

Začněme prvním příkladem. Ve slově Bangalore najděte polohu postavy a.

Níže uvedený kód provede úkol za nás.

Kód:

Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub

Nyní spusťte výše uvedený kód VBA pomocí klávesy F5, nebo můžete tento kód spustit také ručně, jak je znázorněno na níže uvedeném snímku obrazovky.

Výstup:

Příklad č. 2

Nyní ve slově Bangalore najděte pozici znaku „a“ ze třetí pozice.

Níže uvedený kód provede úkol za nás.

Kód:

Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub

Chcete-li spustit výše uvedený kód, můžete použít klávesu F5 nebo můžete tento kód spustit také ručně, jak je znázorněno na níže uvedeném snímku obrazovky.

Výstup:

Nyní se na výše uvedeném obrázku podívejte na rozdíl od předchozího kódu. Protože jsme uvedli počáteční pozici znaku jako 3, ignoroval první znak „a“ na 2. pozici.

Příklad č. 3

Nyní uvidíme vyhledávání malých a velkých písmen. Ve slově Bangalore najděte písmeno „A.“

K tomu musíme zadat argument porovnání jako vbBinaryCompare.

Kód:

Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub

Nyní spusťte tento kód pomocí klávesy F5, nebo můžete tento kód spustit také ručně.

Výstup:

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 funkce VBA, takže ji nemůžete použít v listu aplikace Excel jako jiné předdefinované vzorce.
  • Pokud funkce nemůže najít řetězec 2, bude výsledek nulový.

Zajímavé články...