Comprobar si una cadena contiene una subcadena en VBA

Glen Alfaro 30 enero 2023
  1. Uso de la función Instr() para verificar si la cadena principal contiene una subcadena
  2. Uso de la función InstrRev() para comprobar si la cadena principal contiene una subcadena
  3. Uso del operador Like para verificar si la cadena principal contiene una subcadena
Comprobar si una cadena contiene una subcadena en VBA

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 principal
n - La búsqueda comenzará en la posición n.
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 Observaciones para 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

Artículo relacionado - VBA String