Comparación de VBA Operators: No iguales, Less que o igual a

⚔ Resumen inteligente

Comparación de VBA OperaLos operadores comparan un valor con otro y devuelven Verdadero o Falso. Esta pÔgina define los seis operadores, los muestra dentro de una instrucción If, explica cómo se comparan textos y fechas, y enumera los errores que producen resultados incorrectos.

  • šŸ‡§šŸ‡· Propósito: Los operadores de comparación validan los datos comprobando una condición que se evalĆŗa como verdadera o falsa.
  • šŸ”¢ Seis Operatores: Igual, menor que, mayor que, distinto de, menor o igual que, y mayor o igual que.
  • šŸ” Doble función: El signo de igual compara dentro de una condición y asigna un valor fuera de ella.
  • 🧪 Si la instrucción: Cada comparación se coloca dentro de If, ​​ElseIf o Do While para controlar quĆ© código se ejecuta.
  • šŸ”¤ Texto y fechas: Las cadenas de texto se comparan carĆ”cter por carĆ”cter, y las fechas se comparan como nĆŗmeros de serie.
  • āš ļø Trampa de precisión: Dos Double Los valores que parecen idĆ©nticos pueden no superar una prueba de igualdad, por lo que conviene comparar una diferencia redondeada.

Comparación de VBA Operatoros

Comparación de VBA Operatoros

Estos son operadores que se utilizan para comparar valores. Los operadores de comparación incluyen igual a, menor que, mayor que y distinto de.

Los operadores de comparación se utilizan para comparar valores con fines de validación. Digamos que estÔs desarrollandoping Una aplicación de punto de venta sencilla. En esta aplicación, se desea validar los valores introducidos antes de registrar la transacción. Para ello, se pueden utilizar operadores de comparación. Este operador comprueba si hay números negativos o si el importe pagado no supera el importe facturado. Los operadores de comparación resultan muy útiles en estas situaciones.

Cada comparación devuelve uno de dos valores, Verdadero o Falso, y nunca un número. Sobre ese resultado actúa una instrucción If.

La siguiente tabla enumera los operadores de comparación definidos en VBA.

Operator Mareas Ideales para Lecciones
= Igual: comprueba si dos valores son iguales. También se utiliza como operador de asignación.
< Less que: comprueba si el valor de la izquierda es menor que el valor de la derecha.
> Mayor que: comprueba si el valor de la izquierda es mayor que el valor de la derecha.
<> Distinto de: comprueba si dos valores son diferentes entre sĆ­.
<= Less menor o igual que: comprueba si el valor de la izquierda es menor o igual que el valor de la derecha.
>= Mayor o igual que: comprueba si el valor de la izquierda es mayor o igual que el valor de la derecha.

Ver cómo se aplica cada operador a dos variables facilita la predicción del resultado obtenido.

Comparación de VBA Operators con ejemplo

La siguiente tabla muestra la comparación de Excel VBA Operators con ejemplos y resultados.

S / N Operator Ejemplo Resultado
1 = Si x = z Entonces Devuelve verdadero si son iguales, en caso contrario devuelve falso
2 < Si x < z entonces Devuelve verdadero si x es menor que z, en caso contrario devuelve falso
3 > Si x > z Entonces Devuelve verdadero si x es mayor que z, en caso contrario devuelve falso
4 <> Si x <> z Entonces Devuelve verdadero si no son iguales, en caso contrario devuelve falso
5 <= Si x <= z Entonces Devuelve verdadero si x es menor o igual que z, en caso contrario devuelve falso
6 >= Si x >= z Entonces Devuelve verdadero si x es mayor o igual que z, en caso contrario devuelve falso

Código fuente de ejemplo

Comparación igualitaria Operator

If 2 = 1 Then
    MsgBox "True", vbOKOnly, "Equal Operator"
Else
    MsgBox "False", vbOKOnly, "Equal Operator"
End If

AQUƍ,

  • ā€œSi 2 = 1 Entonces… De lo contrario… Termina siā€ utiliza la declaración if para evaluar la condición "2 = 1"
  • ā€œMensajeBox... " Es una función incorporada que muestra un cuadro de mensaje.
    • El primer parĆ”metro ā€œVerdaderoā€ o ā€œFalsoā€ es lo que se mostrarĆ” en el cuadro de mensaje. En nuestro ejemplo, 2 no es igual a 1, por lo tanto, se mostrarĆ” ā€œfalsoā€ en el cuadro de mensaje.
    • El segundo parĆ”metro ā€œvbOKOnlyā€ es el botón que se muestra en el cuadro de mensaje.
    • El tercer parĆ”metro ā€œIgual Operaā€œtorā€ es el tĆ­tulo del cuadro de mensaje.

Al ejecutar el código anterior se obtienen los siguientes resultados

Igual Operator

Esa única prueba es la forma mÔs simple. Las macros reales combinan comparaciones y se ramifican entre varios resultados.

Cómo utilizar la comparación Operators en una instrucción If

Un operador de comparación rara vez resulta útil por sí solo. Su resultado (verdadero o falso) se introduce en una estructura de decisión, y la instrucción condicional (if) es la que mÔs se utiliza. El siguiente ejemplo evalúa una puntuación almacenada en la celda A1 y muestra el resultado junto a ella.

Sub GradeScore()
    Dim Score As Long

    Score = Sheet1.Range("A1").Value

    If Score >= 90 Then
        Sheet1.Range("B1").Value = "Distinction"
    ElseIf Score >= 50 Then
        Sheet1.Range("B1").Value = "Pass"
    ElseIf Score < 0 Then
        MsgBox "A score cannot be negative", vbCritical, "Invalid Entry"
    Else
        Sheet1.Range("B1").Value = "Fail"
    End If
End Sub

La macro lee la puntuación una vez y luego la compara con tres condiciones en orden. Cuatro puntos explican por qué se comporta de esa manera.

  • El orden importa: VBA se detiene en la primera rama que devuelve True. Colocando Puntuación >= 50 antes Puntuación >= 90 CalificarĆ­a cada puntuación alta como un aprobado.
  • De lo contrario, es la opción comodĆ­n: Cualquier valor que no supere todas las pruebas anteriores pasa a la fase Else, por lo que ninguna entrada queda sin procesar.
  • Sin encadenamiento: VBA no puede leer 0 <= Puntuación <= 100. Escribir Si Puntuación >= 0 Y Puntuación <= 100 Entonces mediante el operadores logicos .
  • La misma prueba, otras estructuras: La misma condición rige los bucles Do While y Select Case, por lo que los operadores se transfieren a todos los bucles que escribas.

šŸ’” Consejo: Declara la variable con un tipo numĆ©rico, como se muestra con Puntuación tenue durante mucho tiempo. Si el valor permanece como un texto de tipo Variant, ā€œ9ā€ > ā€œ10ā€ Devuelve True porque la comparación se realiza carĆ”cter por carĆ”cter.

Comparación de texto y fechas en VBA

Numbers Las comparaciones se realizan exactamente como lo indica la aritmƩtica, pero el texto y las fechas siguen sus propias reglas, y ambos sorprenden a los principiantes.

Las cadenas se comparan carĆ”cter por carĆ”cter utilizando su posición de ordenación, por lo que ā€œAppleā€ < ā€œBananaā€ devuelve True. Por defecto, la comparación distingue entre mayĆŗsculas y minĆŗsculas, lo que significa que ā€œguru99ā€ = ā€œGuru99ā€ devuelve Falso. Colocando Opción Comparar texto En la parte superior del módulo, todas las comparaciones de cadenas en ese módulo ignoran las mayĆŗsculas y minĆŗsculas. Para una sola prueba sin modificar el módulo, utilice StrComp con el argumento vbTextCompare.

Las fechas se almacenan como nĆŗmeros de serie contados desde el 30 de diciembre de 1899, por lo que se comparan directamente con los mismos seis operadores. Escritura Si Fecha de vencimiento < Fecha entonces Detecta correctamente los elementos vencidos, ya que Date devuelve la fecha actual del sistema como un nĆŗmero de serie. El Ćŗnico inconveniente es una fecha almacenada como texto: ā€œ01/02/2026ā€, leĆ­da de un archivo importado, es una cadena de texto, no una fecha, y se compara alfabĆ©ticamente. ConviĆ©rtala con CDate antes de probarla.

Conocer las reglas de cada tipo elimina la mayorƭa de las sorpresas, pero aun asƭ, algunos errores pueden pillar desprevenidos a los desarrolladores mƔs experimentados.

Errores comunes al comparar valores en VBA

Los cinco problemas que se describen a continuación explican la mayoría de las comparaciones que arrojan un resultado inesperado.

  • Asignación confundida con comparación: Fuera de una condición, x = 5 Almacena 5 en x. Dentro de If, ​​los mismos sĆ­mbolos comprueban la igualdad. VBA no tiene un operador == independiente, asĆ­ que lea el contexto con atención.
  • Pruebas Double valores para igualdad exacta: La precisión almacenada significa que 0.1 + 0.2 = 0.3 devuelve Falso. Compare la diferencia redondeada en su lugar, por ejemplo. Si Abs(a – b) < 0.000001 Entonces.
  • Comparar cualquier cosa con Nulo: Nulo no es igual a nada, ni siquiera a otro Nulo. Prueba con IsNull en lugar de = Nulo.
  • Comparar un texto con un nĆŗmero: Una celda que contiene el texto "100" no es igual al nĆŗmero 100. Realice la conversión con CLng o CDbl antes de la prueba.
  • Leer .Text en lugar de .Value: La propiedad .Text devuelve el texto que se muestra, el cual se trunca segĆŗn el ancho de la columna y el formato. Siempre compare .Value.

Descargue el archivo Excel anterior. Code

Preguntas Frecuentes

No. VBA evalúa la primera comparación como Verdadero o Falso, y luego compara ese resultado con 10, lo que da una respuesta engañosa. Escribe las dos pruebas por separado y únelas con la conjunción "Y".

Like compara una cadena con un patrón en lugar de un valor exacto. Los comodines incluyen el asterisco para cualquier carĆ”cter y el signo de interrogación para un solo carĆ”cter, por lo que ā€œGuru99ā€ Me gusta ā€œGuru*ā€ devuelve Verdadero.

Utilice el operador Is, como en If ws Is Nothing Then. El signo de igual compara valores, mientras que Is comprueba si dos variables de objeto apuntan al mismo objeto, que es la única prueba vÔlida para objetos.

Sí. Describe la regla con palabras sencillas, como por ejemplo: marca cualquier pedido superior a 500 realizado antes de hoy, y un asistente de IA devolverÔ la condición If correspondiente. Verifica los valores límite antes de confiar en ella.

Sí. Pega el bloque If y un asistente de IA. traces qué rama captura cada valor, luego señala un ElseIf inalcanzable o una comparación entre texto y un número. Confirme la corrección paso a pasoping a través del código.

Resumir este post con: