VBA InStr

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 den utgång som returneras av funktionen är numerisk 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 strä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ända 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 den tredje positionen måste vi berätta för Instr-funktionens startposition som 3. Så från den tredje positionen står “a” i 5: e position. Om du ignorerar denna parameter ä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: Det här ä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 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 resultat och om du söker för "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. Om vi ​​till exempel söker efter "a" i ordet "Bangalore" skulle Instr returnera 2 som 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

Du kan ladda ner denna Excel-mall för VBA Instr-funktion här - VBA Instr-funktion Excel-mall

Exempel nr 1

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

Nedanstående kod 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:

Nu i bilden ovan ser du skillnaden från föregående kod. 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 hittar du bokstaven "A".

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

Koda:

 Sub Instr_Example3 () Dim i As 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:

Eftersom vi har tillhandahållit jämförargumentet som funktionen vbBinaryCompare Instr returnerade resultatet som noll eftersom det inte finns någon stor bokstav "A" .

Exempel # 4

Nu ser vi ytterligare en skiftlägeskänslig sökning. I ordet Bangalore hittar du bokstaven "A". Föregående exempel returnerade resultatet som noll.

För att övervinna det skiftlägeskänsliga tillvägagångssättet här måste vi ange jämförargumentet som vbTextCompare.

Koda:

 Sub Instr_Exempel4 () Dim i som variant i = InStr (1, "Bangalore", "A", vbTextCompare) 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:

Exempel # 5

Nu kommer vi att se den avancerade nivån på instrumentfunktionen. Om du har många ark som har ett mer eller mindre liknande namn och du vill dölja alla dessa ark samtidigt kan vi använda koden nedan för att dölja ett specifikt ark.

Till exempel har jag fem ark med namnet Sammanfattning 1, Sammanfattning 2, Sammanfattning 3, Sammanfattning 4 och Datablad.

Nu vill jag att dölja alla de ark som har ordet ”Summary”. Använd koden nedan för att dölja alla ark som har ordet Sammanfattning i sitt namn.

Koda:

 Sub To_Hide_Specific_Sheet () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Om InStr (Ws.Name, "Sammanfattning")> 0 Då Ws.Visible = xlSheetVeryHidden End Om nästa Ws 'InStr-funktion letar efter ord eller fras i arknamnet 'Om den hittar kommer den att döljas End Sub 

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

På samma sätt för att ta bort alla dessa ark använder du koden nedan.

Koda:

 Sub To_UnHide_Specific_Sheet () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Om InStr (Ws.Name, "Sammanfattning")> 0 Då Ws.Visible = xlSheetVisible Slut om nästa Ws 'InStr-funktion letar efter ord eller fras i arknamnet 'Om den hittar kommer den att döljas End Sub 

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

Saker att komma ihåg

  • Instr är en skiftlägeskänslig funktion. För att eliminera detta skiftlägeskänsliga problem måste du ange [jämför] argumentet som.
  • 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 is a VBA function so that you cannot use it in an excel worksheet like other built-in formulas.
  • If the function cannot find the String 2 the result will be zero.