Operador LIKE

Se usa para comparar dos cadenas.

Sintaxis

Resultado = stringLike pattern (Patrón similara la cadena)

La sintaxis del operador Like consta de los siguientes elementos:

Parte Descripción
result Obligatorio; cualquier variable numérica.
string Requerido; cualquier expresión de cadena.
pattern Requerido; cualquier expresión de cadena que sigue las convenciones de coincidencia de modelos descritas en Observaciones.

Comentarios

Si cadena coincide con patrón, resultado es True; si no coincide, resultado es False. Si cadena o patrón es Null, resultado es *Null.

El comportamiento del operador Like depende de la instrucción Option Compare. El método cadena-comparación para cada módulo es Option Compare Binary.

Los resultados de Option Compare Binary en las comparaciones de cadena basadas en un criterio de ordenación obtenidos de las representaciones binarias internas de los caracteres. El criterio de ordenación está determinado por la página de códigos.

En el siguiente ejemplo, se muestra un criterio de ordenación binario típico:

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text tiene como resultado comparaciones de cadena en función de un criterio de ordenación textual y no que no distingue entre mayúsculas y minúsculas, determinado por la configuración regional del sistema. Cuando ordena los mismos caracteres con Option Compare Text, se produce el siguiente criterio de ordenación de texto:

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

La coincidencia de modelos integrada proporciona una herramienta versátil para comparaciones de cadenas. Las características de coincidencia de modelos le permite usar caracteres comodín, listas de caracteres o rangos de caracteres, en cualquier combinación, para coincidir con las cadenas. En la siguiente tabla se muestran los caracteres permitidos en el patrón y con qué coinciden:

Caracteres en el patrón Coincide en la cadena
? Cualquier carácter único.
* Cero o más caracteres.
# Cualquier dígito único (0-9).
[ charlist ] Cualquier carácter único en listacaracteres.
[ !charlist ] Cualquier carácter único que no se encuentra en la listacaracteres.

Se puede usar un grupo de uno o más caracteres ( charlist ) entre corchetes ([ ]) para que coincida con cualquier carácter de cadena y puede incluir casi cualquier código de caracteres, incluidos los dígitos.

Nota:

Para coincidir con los caracteres especiales, el corchete izquierdo ([), el signo de interrogación (?), el signo de número (#) y el asterisco (*), enciérrelos entre corchetes. El corchete derecho (]) no se puede usar dentro de un grupo para que coincida con sí mismo pero se puede usar fuera de un grupo como carácter individual.

Al usar un guión (-) para separar los límites superior e inferior del rango, la listacaracteres puede especificar un rango de caracteres. Por ejemplo, [A-Z] da como resultado una coincidencia si la posición de caracteres correspondiente en la cadena contiene letras mayúsculas en el rango A-Z. Se incluyen varios rangos dentro de los corchetes sin delimitadores.

El significado de un rango especificado depende de la ordenación de caracteres válida en tiempo de ejecución (como lo determina Option Compare y el ajuste de la configuración regional del sistema en la que se está ejecutando el código). Con el ejemplo de comparación de opciones binarias , el intervalo [A-E] coincide con A, B y E. Con la opción Comparar texto, [A-E] coincide con A, a, À, à, B, b, E, e. El rango no coincide con Ê o ê ya que los caracteres acentuados se encuentran detrás de los caracteres sin acentuar en el criterio de ordenación.

Entre otras reglas importantes para coincidencia de modelos se incluyen las siguientes:

  • Un signo de exclamación (!) al comienzo de la listacaracteres significa que se realiza una coincidencia si se encuentra cualquier carácter excepto los caracteres de la listacaracteres en la cadena. Cuando se usa fuera de los corchetes, el signo de exclamación coincide consigo mismo.
  • Puede aparecer un guión (-) al comienzo (tras un signo de exclamación si se usa) o al final de la listacaracteres para que coincida consigo mismo. En cualquier otra ubicación, el guión se usa para identificar un rango de caracteres.
  • Cuando se especifica un rango de caracteres, deben aparecer en el criterio de ordenación ascendente (de inferior a superior). [A-Z] es un patrón válido pero [Z-A] no lo es.
  • La secuencia [] de caracteres se considera una cadena de longitud cero ("").

En algunos idiomas, hay caracteres especiales en el alfabeto que representan dos caracteres independientes. Por ejemplo, varios idiomas usan el carácter "æ" para representar los caracteres "a" y "e" cuando aparecen juntos. El operador Like reconoce que el carácter especial único y los dos caracteres individuales son equivalentes.

Cuando se especifica un idioma que usa un carácter especial en la configuración regional del sistema, una aparición del carácter especial único en el patrón o cadena coincide con la secuencia de 2 caracteres equivalente en la otra cadena. De manera similar, una carácter especial único en el patrón entre corchetes (por sí mismo, en una lista, o en un rango) coincide con la secuencia de 2 caracteres equivalente en la cadena.

Ejemplo:

Este ejemplo usa el operador Like para comparar una cadena con un patrón.

Dim MyCheck
MyCheck = "aBBBa" Like "a*a"    ' Returns True.
MyCheck = "F" Like "[A-Z]"    ' Returns True.
MyCheck = "F" Like "[!A-Z]"    ' Returns False.
MyCheck = "a2a" Like "a#a"    ' Returns True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]"    ' Returns True.
MyCheck = "BAT123khg" Like "B?T*"    ' Returns True.
MyCheck = "CAT123khg" Like "B?T*"    ' Returns False.
MyCheck = "ab" Like "a*b"    ' Returns True.
MyCheck = "a*b" Like "a [*]b"    ' Returns False.
MyCheck = "axxxxxb" Like "a [*]b"    ' Returns False.
MyCheck = "a [xyz" Like "a [[]*"    ' Returns True.
MyCheck = "a [xyz" Like "a [*"    ' Throws Error 93 (invalid pattern string).

Consulte también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.