VBA InStr

Excel VBA InStr-functie

Instr in VBA wordt gebruikt om de positie van een bepaalde substring in een string te achterhalen nadat we de vergelijkingsmethode met de functie hebben gespecificeerd, er zijn vier verschillende vergelijkingsmethoden voor deze functie, Instr is een stringfunctie maar de output die door de functie wordt geretourneerd is numeriek, dus de uitvoer van deze functie is in een integer-variabele.

String in VBA is niets anders dan een reeks karakters, dwz alle teksten die worden geleverd met dubbele aanhalingstekens worden behandeld als strings. InStr-functie is een ingebouwde tekstfunctie die wordt gebruikt om strings te manipuleren. Bijvoorbeeld: als u een substring uit een zin wilt extraheren of als u lettertype-ontwerpwijzigingen wilt toepassen op een bepaalde tekenreeks in een reeks tekens of als u de positie van een teken en vele andere mogelijkheden wilt vinden, kunt u deze gebruiken InStr.

Syntaxis

Het heeft 4 argumenten, zoals weergegeven in de onderstaande afbeelding.

  • [Start]: dit is niet verplicht. Dit is de numerieke waarde die we nodig hebben om aan te geven vanaf welke positie van de string Instr-functie begint te zoeken naar de geleverde tekst. Bijvoorbeeld: als u het karakter “a” in het woord “Bangalore” wilt zoeken vanaf de 3e positie, moeten we de Instr-functie als startpositie aangeven als 3. Dus vanaf de 3e positie staat karakter “a” op de 5e positie. Als u deze parameter negeert, is de standaardwaarde 1.
  • String 1: Dit is de daadwerkelijke string die we aanleveren, dwz uit deze tekst proberen we de substring te vinden. Als u bijvoorbeeld zoekt naar de tekenreeks "a" in "Bangalore", Tekenreeks 1 in Bangalore.
  • String 2: Dit is niets anders dan de string waarnaar we op zoek zijn. Als u bijvoorbeeld zoekt naar de tekenreeks "a" in "Bangalore", is String 2 a .
  • [Compare]: Dit is weer een optioneel argument. Er zijn drie soorten opties beschikbaar in het [vergelijk] -argument.

  • vbBinaryCompare: dit is niets anders dan een hoofdlettergevoelige zoekopdracht van de substring (string 2) in String 1. Als we bijvoorbeeld zoeken naar "a" in het woord "Bangalore", zou Instr 2 als resultaat retourneren en als u zoekt voor "A" in het woord "Bangalore" zou Instr 0 als resultaat retourneren omdat de opgegeven tekenreeks een hoofdletterwaarde is.

We kunnen ook nul (0) als argument invoeren.

vbTextCompare: Dit is geen hoofdlettergevoelige zoekopdracht van de tekenreeks 2 in tekenreeks 1. Als we bijvoorbeeld zoeken naar "a" in het woord "Bangalore", zou Instr 2 als resultaat retourneren en als u zoekt naar "A" in het woord "Bangalore" zou Instr ook 2 teruggeven. Logica is A = a, B = b, C = c etc.….

We kunnen ook één (1) als argument plaatsen.

vbDatabaseCompare: Dit wordt gebruikt om de informatie uit uw database, dwz Microsoft Access-database, te vergelijken.

We kunnen ook één (-1) als argument invoeren.

Top 5 voorbeelden van het gebruik van VBA Instr-functie

U kunt deze VBA Instr-functie Excel-sjabloon hier downloaden - VBA Instr-functie Excel-sjabloon

Voorbeeld 1

Laten we beginnen met het eerste voorbeeld. Zoek in het woord Bangalore de positie van het teken a.

Onderstaande code zal de taak voor ons uitvoeren.

Code:

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

Voer nu de hierboven gegeven VBA-code uit met behulp van de F5-toets of u kunt deze code ook handmatig uitvoeren zoals weergegeven in de onderstaande schermafbeelding.

Uitgang:

Voorbeeld # 2

Zoek nu in het woord Bangalore de positie van het karakter "a" vanaf de derde positie.

De onderstaande code voert de taak voor ons uit.

Code:

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

Om de hierboven gegeven code uit te voeren, kunt u de F5-toets gebruiken of u kunt deze code ook handmatig uitvoeren zoals weergegeven in de onderstaande schermafbeelding.

Uitgang:

Kijk nu in de bovenstaande afbeelding naar het verschil met de vorige code. Aangezien we de beginpositie van het karakter 3 hebben genoemd, negeerde het het eerste karakter "a" op de 2e positie.

Voorbeeld # 3

Nu zullen we hoofdlettergevoelig zoeken zien. Zoek in het woord Bangalore de letter "A".

Hiervoor moeten we het vergelijkingsargument opgeven als vbBinaryCompare.

Code:

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

Voer nu deze code uit met behulp van de F5-toets of u kunt deze code ook handmatig uitvoeren.

Uitgang:

Aangezien we het vergelijkingsargument hebben opgegeven als vbBinaryCompare Instr-functie retourneerde het resultaat als nul omdat er geen hoofdletter "A" bestaat.

Voorbeeld # 4

Nu zullen we nog een hoofdlettergevoelige zoekopdracht zien. Zoek in het woord Bangalore de letter "A". Het vorige voorbeeld retourneerde het resultaat als nul.

Om de hoofdlettergevoelige benadering hier te omzeilen, moeten we het vergelijkingsargument opgeven als vbTextCompare.

Code:

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

Voer nu deze code uit met behulp van de F5-toets of u kunt deze code ook handmatig uitvoeren.

Uitgang:

Voorbeeld # 5

Nu zullen we het geavanceerde niveau van de Instr-functie zien. Als u veel bladen heeft met een min of meer vergelijkbare naam en u wilt al die bladen in één keer verbergen, dan kunnen we de onderstaande code gebruiken om een ​​specifiek blad te verbergen.

Ik heb bijvoorbeeld 5 bladen met de namen Samenvatting 1, Samenvatting 2, Samenvatting 3, Samenvatting 4 en Gegevensblad.

Nu wil ik al die bladen verbergen die het woord "Samenvatting" hebben. Gebruik de onderstaande code om alle bladen met het woord Samenvatting in de naam te verbergen.

Code:

 Sub To_Hide_Specific_Sheet () Dim Ws As Worksheet For Every Ws In ActiveWorkbook.Worksheets If InStr (Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr-functie zoekt naar woord of zin in de bladnaam 'Als het vindt, wordt het verborgen 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 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.