Comprobar si una cadena contiene una subcadena en VBA
- 
          
            Uso de la función Instr()para verificar si la cadena principal contiene una subcadena
- 
          
            Uso de la función InstrRev()para comprobar si la cadena principal contiene una subcadena
- 
          
            Uso del operador Likepara verificar si la cadena principal contiene una subcadena
 
Este artículo demostrará el uso de la función Instr(), la función InstrRev() y la función Like para verificar si la cadena principal contiene una subcadena.
Uso de la función Instr() para verificar si la cadena principal contiene una subcadena
    
Sintaxis de la función Instr():
InStr([ start ], string1, string2, [ compare ])
Tipo de valor devuelto: entero
Parámetros:
| [ start ] | Opcional. Valor numérico donde comenzará la búsqueda. Para el argumento [ start ], a continuación se muestran los valores correspondientes:1- [Default] La búsqueda comenzará al principio de la cadena principaln- La búsqueda comenzará en la posiciónn. | 
| string1 | Obligatorio. La cadena a buscar (cadena principal) | 
| string2 | Obligatorio. La cadena a encontrar. | 
| [ compare ] | Opcional. Indica qué método de comparación de cadenas se utilizará. Para el argumento [ compare ], a continuación se encuentran los valores correspondientes:0- [Default] Método de comparación binario (sensible a mayúsculas y minúsculas)1- Método de comparación de texto (no distingue entre mayúsculas y minúsculas) | 
El siguiente bloque de código verificará si una subcadena está en la cadena principal en VBA usando la función Instr().
Function IsSubstring(pos as Integer, mainStr as String, subStr as String,compTyp as Integer) as boolean
    'if `Instr()` function returned 0 then the substring is not present in the main string.
    'If `Instr()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If Instr(pos,mainStr,subStr,compTyp) >0 Then
        IsSubstring = true
        Else: IsSubstring = false
    End if
End Function
Sub test1()
    Debug.print IsSubstring(1,"ABCDE","C",1)
End Sub
Sub test2()
    Debug.print IsSubstring(1,"ABCDE","F",1)
End Sub
Sub test3()
    Debug.print IsSubstring(1,"ABCDE","c",0)
End Sub
Salida test1:
True
Salida test2:
False
Salida test3:
False
El siguiente bloque de código devolverá la posición de la subcadena de la cadena principal usando la función Instr().
Function GetPosition(pos as Integer, mainStr as String, subStr as String,compTyp as Integer)
    'Check first if the substring is in the main string.
     If InStr(pos, mainStr, subStr, compTyp) > 0 Then
        'if substring is in the main string then get the position of the substring in the main string.
       GetPosition = InStr(1, mainStr, subStr, 1)
       Else: GetPosition = ("Subtring is not in the main string.")
   End If
End Function
Sub test1()
    'Check if `C` is in `ABCDE` starting at the first letter (A), case insensitive.
    Debug.Print GetPosition(1,"ABCDE", "C",1)
End Sub
Sub test2()
    'Check if `c` is in `ABCDE` starting at the first letter of the main string, case sensitive.
    Debug.Print GetPosition(1,"ABCDE", "c",0)
End Sub
Sub test3()
    'Check if `c` is in `ABCDE` starting at the fourth letter of the main string, case sensitive.
    Debug.Print GetPosition(4,"ABCDE", "c",0)
End Sub
Salida test1:
3
Salida test2:
Subtring is not in the main string.
Salida test3:
Subtring is not in the main string.
Uso de la función InstrRev() para comprobar si la cadena principal contiene una subcadena
Sintaxis de la función InstrRev():
InStrRev(string1, string2,[ start ], [ compare ])
Tipo de valor devuelto: entero
Parámetros:
| string1 | Obligatorio. La cadena a buscar (cadena principal) | 
| string2 | Obligatorio. La cadena a encontrar. | 
El siguiente bloque de código verificará si una subcadena está en la cadena principal en VBA usando la función InstrRev().
Function IsSubstring(mainStr As String, subStr As String) As Boolean
    'if `InstrRev()` function returned 0 then the substring is not present in the main string.
    'If `InstrRev()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If InStrRev(mainStr, subStr) > 0 Then
        IsSubstring = True
        Else: IsSubstring = False
    End If
End Function
Sub test1()
    Debug.Print IsSubstring("ABCDE", "C")
End Sub
Sub test2()
    Debug.Print IsSubstring("ABCDE", "F")
End Sub
Salida test1:
True
Salida test2:
False
Uso del operador Like para verificar si la cadena principal contiene una subcadena
Sintaxis del operador Like:
res = string Like pattern
Tipo de retorno: booleano
Parámetros:
| res | Obligatorio. Valor de retorno en booleano | 
| string | Obligatorio. La cadena para mirar | 
| pattern | Obligatorio. La cuerda a buscar. Ver Observacionespara más detalles | 
Observaciones:
| ? | Cualquier personaje individual | 
| * | Cualquier 0 a muchos caracteres | 
| # | Cualquier número único (0 a 9) | 
El siguiente bloque de código verificará si una subcadena está en la cadena principal en VBA usando el operador Like.
Function IsSubString(mainStr as String,subStr as String) as Boolean
    'Check if subStr is in the main string by using *
   If mainStr Like "*" & subStr & "*" Then
        IsSubString = True
        Else: IsSubstring= False
   End If
End Function
Sub test1()
    Debug.print (IsSubString("ABCDE","C"))
End Sub
Sub test2()
    Debug.print (IsSubString("ABCDE","c"))
End Sub
Sub test3()
    Debug.print (IsSubString("ABCDE","F"))
End Sub
Salida test1:
True
Salida test2:
False
Salida test3:
False