Comparación de cadenas de VBA - ¿Cómo comparar dos valores de cadena?

Comparación de cadenas de Excel VBA

Para comparar dos cadenas en VBA tenemos una función incorporada, es decir, " StrComp ". Esto lo podemos leer como “ Comparación de cadenas ”, esta función está disponible solo con VBA y no está disponible como una función de hoja de trabajo. Compara dos cadenas cualesquiera y devuelve los resultados como "Cero (0)" si ambas cadenas coinciden y si ambas cadenas proporcionadas no coinciden, obtendríamos "Uno (1)" como resultado.

En VBA o Excel, enfrentamos muchos escenarios diferentes. Uno de esos escenarios es "comparar dos valores de cadena". En una hoja de trabajo normal, podemos hacer estas múltiples formas, pero en VBA, ¿cómo se hace?

A continuación se muestra la sintaxis de la función "StrComp".

Primero, dos argumentos son bastante simples,

  • para la Cadena 1, necesitamos proporcionar cuál es el primer valor que estamos comparando y
  • para la Cadena 2, necesitamos proporcionar el segundo valor que estamos comparando.
  • (Compare) este es el argumento opcional de la función StrComp. Esto es útil cuando queremos comparar la comparación sensible a mayúsculas y minúsculas. Por ejemplo, en este argumento, "Excel" no es igual a "EXCEL" porque ambas palabras distinguen entre mayúsculas y minúsculas.

Podemos proporcionar tres valores aquí.

  • Cero (0) para " Comparación binaria " , es decir, "Excel", no es igual a "EXCEL". Para una comparación sensible a mayúsculas y minúsculas, podemos proporcionar 0.
  • Uno (1) para " Comparación de texto " , es decir, "Excel", es igual a "EXCEL". Esta es una comparación que no distingue entre mayúsculas y minúsculas.
  • Dos (2) esto solo para comparación de bases de datos.

Los resultados de la función "StrComp" no son TRUE o FALSE por defecto, pero varían. A continuación se muestran los diferentes resultados de la función "StrComp".

  • Obtendremos "0" como resultado si las cadenas proporcionadas coinciden.
  • Obtendremos "1" si las cadenas proporcionadas no coinciden, y en caso de coincidencia numérica, obtendremos 1 si la cadena 1 es mayor que la 2.
  • Obtendremos “-1” si el número de la cadena 1 es menor que el número de la cadena 2.

¿Cómo realizar una comparación de cadenas en VBA?

Ejemplo 1

Combinaremos " Bangalore " con la cadena " BANGALORE ".

Primero, declare dos variables de VBA como la cadena para almacenar dos valores de cadena.

Código:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 Como String End Sub

Para estas dos variables, almacene dos valores de cadena.

Código:

Sub String_Comparison_Example1 () Dim Value1 Como cadena Dim Value2 Como cadena Value1 = "Bangalore" Value2 = "BANGALORE" End Sub

Ahora declare una variable más para almacenar el resultado de la función " StrComp ".

Código:

Sub String_Comparison_Example1 () Dim Value1 como cadena Dim Value2 como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult como cadena final

Para esta variable, abra la función "StrComp".

Código:

Sub String_Comparison_Example1 () Dim Value1 Como cadena Dim Value2 Como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult Como cadena FinalResult = StrComp (End Sub

Para “Cadena1” y “Cadena2” ya hemos asignado valores a través de variables, así que ingrese los nombres de variable, respectivamente.

Código:

Sub String_Comparison_Example1 () Dim Value1 Como cadena Dim Value2 Como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult Como cadena FinalResult = StrComp (Value1, Value2, End Sub

La última parte de la función es "Comparar" para esta opción "vbTextCompare".

Código:

Sub String_Comparison_Example1 () Dim Value1 Como cadena Dim Value2 Como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult Como cadena FinalResult = StrComp (Value1, Value2, vbTextCompare) End Sub

Ahora muestre la variable "Resultado final" en el cuadro de mensaje en VBA.

Código:

Sub String_Comparison_Example1 () Dim Value1 como cadena Dim Value2 como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult Como cadena FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Ok, ejecutemos el código y veamos el resultado.

Salida:

Dado que las cadenas “Bangalore” y “BANGALORE” son iguales, obtuvimos el resultado como 0, es decir, coincidencia. Ambos valores distinguen entre mayúsculas y minúsculas ya que hemos proporcionado el argumento como "vbTextCompare" ha ignorado la coincidencia sensible a mayúsculas y minúsculas y solo ha hecho coincidir valores, por lo que ambos valores son iguales y el resultado es 0, es decir, VERDADERO.

Código:

Sub String_Comparison_Example1 () Dim Value1 como cadena Dim Value2 como cadena Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult Como cadena FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Ejemplo # 2

For the same code, we will change the compare method from “vbTextCompare” to “vbBinaryCompare.”

Code:

Sub String_Comparison_Example2() Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now run the code and see the result.

Output:

Even though both the strings are the same, we got the result as 1, i.e., Not Matching because we have applied the compare method as “vbBinaryCompare,” which compares two values as case sensitive.

Example #3

Now we will see how to compare numerical values. For the same code, we will assign different values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Both the values are 500, and we will get 0 as a result because both the values are matched.

Output:

Now I will change the Value1 number from 500 to 100.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

We know Value1 & Value2 aren’t the same, but the result is -1 instead of 1 because for numerical comparison when the String 1 value is greater than String 2, we will get this -1.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now I will reverse the values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 1000 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

This is not special. If not match, we will get 1 only.

Things to Remember here

  • (Compare) argument of “StrComp” is optional, but in case of case sensitive match, we can utilize this, and the option is “vbBinaryCompare.”
  • The result of numerical values is slightly different in case String 1 is greater than string 2, and the result will be -1.
  • Results are 0 if matched and 1 if not matched.

Recommended Articles

Esta ha sido una guía para la comparación de cadenas de VBA. Aquí discutimos cómo comparar dos valores de cadena usando la función StrComp en Excel VBA junto con ejemplos y descargar una plantilla de Excel. También puede echar un vistazo a otros artículos relacionados con Excel VBA:

  • Guía de funciones de cadena de VBA
  • VBA dividir cadena en matriz
  • Métodos de subcadena de VBA
  • Texto de VBA

Articulos interesantes...