VBA InStr

Fonction Excel VBA InStr

Instr dans VBA est utilisé pour trouver la position d'une sous-chaîne donnée dans une chaîne après avoir spécifié la méthode de comparaison à la fonction, il existe quatre méthodes de comparaison différentes pour cette fonction, Instr est une fonction de chaîne mais la sortie retournée par la fonction est numérique pour que la sortie de cette fonction soit dans une variable entière.

La chaîne dans VBA n'est rien d'autre qu'une série de caractères, c'est-à-dire que tous les textes fournis avec des guillemets doubles sont traités comme des chaînes. InStr Function est une fonction de texte intégrée utilisée pour manipuler les chaînes. Par exemple - Si vous souhaitez extraire une sous-chaîne d'une phrase ou si vous souhaitez appliquer des modifications de conception de police à une chaîne particulière dans une série de caractères ou si vous souhaitez rechercher la position d'un caractère et de nombreuses autres possibilités, vous pouvez utiliser InStr.

Syntaxe

Il a 4 arguments comme indiqué dans l'image ci-dessous.

  • [Début]: Ce n'est pas obligatoire. Il s'agit de la valeur numérique dont nous avons besoin pour spécifier à partir de quelle position de la chaîne la fonction Instr commence à rechercher le texte fourni. Par exemple: si vous voulez rechercher le caractère «a» dans le mot «Bangalore» à partir de la 3ème position, nous devons indiquer la position de départ de la fonction Instr comme 3. Donc à partir de la 3ème position, le caractère «a» est en 5ème position. Si vous ignorez ce paramètre, la valeur par défaut est 1.
  • Chaîne 1: C'est la chaîne que nous fournissons, c'est-à-dire à partir de ce texte, nous essayons de trouver la sous-chaîne. Par exemple, si vous recherchez la chaîne «a» dans «Bangalore», la chaîne 1 à Bangalore.
  • Chaîne 2: ce n'est rien d'autre que la chaîne que nous recherchons. Par exemple, si vous recherchez la chaîne «a» dans «Bangalore», la chaîne 2 est a .
  • [Comparer]: Ceci est à nouveau un argument facultatif. Il existe trois types d'options disponibles dans l'argument [compare].

  • vbBinaryCompare: Ce n'est rien d'autre qu'une recherche sensible à la casse de la sous-chaîne (chaîne 2) dans la chaîne 1. Par exemple, si nous recherchons «a» dans le mot «Bangalore», Instr renverra 2 comme résultat et si vous recherchez pour «A» dans le mot «Bangalore», Instr renverrait 0 comme résultat car la chaîne fournie est une valeur en majuscules.

Nous pouvons également mettre zéro (0) comme argument.

vbTextCompare: Il ne s'agit pas d'une recherche sensible à la casse de la chaîne 2 dans la chaîne 1. Par exemple, si nous recherchons «a» dans le mot «Bangalore», Instr renverra 2 comme résultat et si vous recherchez «A» dans le mot «Bangalore», Instr renverrait également 2. La logique est A = a, B = b, C = c etc.….

Nous pouvons également mettre un (1) comme argument.

vbDatabaseCompare: Ceci est utilisé pour comparer les informations de votre base de données, c'est-à-dire la base de données Microsoft Access.

Nous pouvons également mettre un (-1) comme argument.

Top 5 des exemples d'utilisation de la fonction VBA Instr

Vous pouvez télécharger ce modèle Excel de fonction VBA Instr ici - Modèle Excel de fonction VBA Instr

Exemple 1

Commençons par le premier exemple. Dans le mot Bangalore, trouvez la position du caractère a.

Le code ci-dessous effectuera la tâche pour nous.

Code:

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

Exécutez maintenant le code VBA ci-dessus à l'aide de la clé F5 ou vous pouvez également exécuter ce code manuellement, comme indiqué dans la capture d'écran ci-dessous.

Production:

Exemple # 2

Maintenant, dans le mot Bangalore, trouvez la position du caractère «a» à partir de la troisième position.

Le code ci-dessous effectuera la tâche pour nous.

Code:

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

Pour exécuter le code ci-dessus, vous pouvez utiliser la touche F5 ou vous pouvez également exécuter ce code manuellement, comme indiqué dans la capture d'écran ci-dessous.

Production:

Maintenant, dans l'image ci-dessus, regardez la différence par rapport au code précédent. Puisque nous avons mentionné la position de départ du caractère comme 3, il a ignoré le premier caractère «a» à la 2e position.

Exemple # 3

Nous allons maintenant voir la recherche sensible à la casse. Dans le mot Bangalore, trouvez la lettre «A».

Pour cela, nous devons fournir l'argument de comparaison en tant que vbBinaryCompare.

Code:

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

Maintenant, exécutez ce code à l'aide de la touche F5 ou vous pouvez également exécuter ce code manuellement.

Production:

Depuis que nous avons fourni l'argument de comparaison comme vbBinaryCompare, la fonction Instr a renvoyé le résultat comme zéro car il n'y a pas de lettre majuscule «A» .

Exemple # 4

Nous allons maintenant voir une autre recherche sensible à la casse. Dans le mot Bangalore, trouvez la lettre «A». L'exemple précédent a renvoyé le résultat comme zéro.

Afin de surmonter l'approche sensible à la casse ici, nous devons fournir l'argument de comparaison en tant que vbTextCompare.

Code:

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

Maintenant, exécutez ce code à l'aide de la touche F5 ou vous pouvez également exécuter ce code manuellement.

Production:

Exemple # 5

Nous allons maintenant voir le niveau avancé de la fonction Instr. Si vous avez de nombreuses feuilles qui ont un nom plus ou moins similaire et que vous souhaitez masquer toutes ces feuilles à la fois, nous pouvons utiliser le code ci-dessous pour masquer une feuille spécifique.

Par exemple, j'ai 5 feuilles nommées Résumé 1, Résumé 2, Résumé 3, Résumé 4 et Fiche technique.

Maintenant, je veux cacher toutes ces feuilles qui ont le mot «Résumé». Utilisez le code ci-dessous pour masquer toutes les feuilles qui ont le mot Résumé dans son nom.

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 La fonction InStr de Ws recherche un mot ou une expression dans le nom de la feuille 'S'il trouve, il sera caché 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.