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
Like
para 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ó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