VBA InStr - Topp 5 exempel för att använda Excel VBA InStr-funktion

Innehållsförteckning

Excel VBA InStr-funktion

Instr i VBA används för att ta reda på positionen för en given substring i en sträng efter att vi har specificerat jämförelsemetoden för funktionen, det finns fyra olika jämförelsemetoder för denna funktion, Instr är en strängfunktion men utgången som returneras av funktionen är numeriskt så att utgången denna funktion är i ett heltal variabel.

Sträng i VBA är inget annat än en serie tecken, dvs. alla texter som levereras med dubbla citat behandlas som strängar. InStr-funktion är en inbyggd textfunktion som används för att manipulera strängar. Till exempel - Om du vill extrahera en understräng från en mening eller om du vill tillämpa ändringar av teckensnittsdesign på en viss sträng i en serie tecken, eller om du vill hitta en karaktärs position och många andra möjligheter kan du använd InStr.

Syntax

Den har fyra argument, som visas i bilden nedan.

  • (Start): Detta är inte obligatoriskt. Detta är det numeriska värdet vi behöver för att ange från vilken position i strängen Instr-funktionen börjar leta efter den levererade texten. Till exempel: om du vill söka tecknet ”a” i ordet ”Bangalore” från tre rd läget måste vi tala om för Besättning funktionen startposition som 3. Så från 3 : e läget, karaktären ”a” är i femte positionen. Om du ignorerar den här parametern är standardvärdet 1.
  • Sträng 1: Detta är den aktuella strängen vi levererar, dvs. från den här texten försöker vi hitta understrängen. Till exempel, om du letar efter strängen “a” i “Bangalore”, sträng 1 i Bangalore.
  • Sträng 2: Detta är ingenting annat än vad som är strängen vi söker efter. Till exempel, om du letar efter strängen “a” i “Bangalore” är String 2 a .
  • (Jämför): Detta är återigen ett valfritt argument. Det finns tre typer av alternativ tillgängliga i (jämför) argumentet.
  • vbBinaryCompare: Detta är inget annat än en skiftlägeskänslig sökning av substringen (sträng 2) i sträng 1. Om vi ​​till exempel söker efter “a” i ordet “Bangalore” skulle Instr returnera 2 som ett resultat, och om du söker efter "A" i ordet "Bangalore" skulle Instr returnera 0 som resultat eftersom den medföljande strängen är versaler.

Vi kan också sätta noll (0) som argument.

vbTextCompare: Detta är inte en skiftlägeskänslig sökning av sträng 2 i sträng 1. Till exempel, om vi söker efter "a" i ordet "Bangalore" skulle Instr returnera 2 som ett resultat, och om du söker efter " A ” i ordet ” Bangalore ” skulle Instr också returnera 2. Logik är A = a, B = b, C = c etc.….

Vi kan också sätta en (1) som argument.

vbDatabaseCompare: Detta används för att jämföra informationen från din databas, dvs Microsoft Access-databasen.

Vi kan också sätta en (-1) som argument.

Topp 5 exempel på användning av VBA-instrumentfunktion

Exempel 1

Låt oss komma igång med det första exemplet. I ordet Bangalore, hitta karaktärens position a.

Koden nedan kommer att utföra uppgiften för oss.

Koda:

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

Kör nu den ovan angivna VBA-koden med F5-tangenten, eller så kan du också köra den här koden manuellt, som visas i nedanstående skärmdump.

Produktion:

Exempel 2

Nu i ordet Bangalore, hitta positionen för karaktären “a” från den tredje positionen.

Koden nedan kommer att utföra uppgiften för oss.

Koda:

Sub Instr_Example2 () Dim i som variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub

För att köra ovanstående kod kan du använda F5-tangenten, eller så kan du också köra den här koden manuellt, som visas i nedanstående skärmdump.

Produktion:

Titta nu på skillnaden från föregående kod i ovanstående bild. Eftersom vi har nämnt karaktärens startposition som 3 ignorerade den första karaktären “a” i den andra positionen.

Exempel # 3

Nu kommer vi att se skiftlägeskänslig sökning. I ordet Bangalore, hitta bokstaven "A."

För detta måste vi ange jämförargumentet som vbBinaryCompare.

Koda:

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

Kör nu den här koden med F5-tangenten, eller så kan du också köra den här koden manuellt.

Produktion:

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 är en VBA-funktion så att du inte kan använda den i ett Excel-kalkylblad som andra inbyggda formler.
  • Om funktionen inte kan hitta sträng 2 blir resultatet noll.

Intressanta artiklar...