Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Trabajando con Operadores | Fundamentos de VBA
Excel VBA para Automatización Empresarial

Trabajando con Operadores

Desliza para mostrar el menú

Declarar variables te proporciona un lugar para almacenar valores. Los operadores son la forma en que combinas, comparas y pruebas esos valores; en esencia, así es como se expresa una regla de negocio en código. "¿Está el stock por debajo del nivel de reposición?" es un operador de comparación. "Reponer si el stock es bajo Y el producto es Electrónica" es un operador lógico.

Operadores aritméticos

La mayoría de estos funcionan exactamente como esperarías en una calculadora, pero VBA tiene dos operadores de división que hacen cosas realmente diferentes:

Dim total As Double
total = 45 * 3      ' multiplication → 135
total = 100 / 3     ' division → 33.33...
total = 100 \ 3     ' integer division → 33 (drops remainder)
total = 100 Mod 3   ' remainder only → 1
total = 2 ^ 3       ' exponent → 8

La barra invertida (\) y Mod son los dos que suelen confundir, porque parecen similares pero responden preguntas opuestas. 100 \ 3 responde "¿cuántas veces completas cabe el 3 en 100?" — la respuesta es 33, y lo que sobra se descarta. 100 Mod 3 responde la pregunta inversa, "¿qué sobra después de que el 3 cabe en 100 tantas veces completas como sea posible?" — la respuesta es 1. Juntos, 33 grupos de 3 más un resto de 1 suman 100 — no es coincidencia, es para lo que están diseñados estos dos operadores. Esta combinación es exactamente cómo calcularías "¿cuántas cajas completas de 3 puedo empacar y cuántas unidades quedan para una caja parcial?" o comprobar si un número de fila es par (i Mod 2 = 0).

Operadores de comparación

Estos devuelven True o False:

44 > 30      ' True
44 = 44      ' True
"Office" = "office"   ' False — VBA's default string comparison IS case-sensitive
44 <> 30     ' True (not equal)

Operadores lógicos

Estos combinan dos o más comparaciones en un solo resultado Verdadero/Falso — exactamente como se expresa una regla de negocio con múltiples condiciones:

If category = "Electronics" And stock < 30 Then
    ' triggers only if BOTH are true
End If
 
If category = "Office" Or category = "Electronics" Then
    ' triggers if EITHER is true
End If
 
If Not (stock < reorderLevel) Then
    ' triggers if stock is NOT below reorder level
End If

And requiere que todas las condiciones unidas por él sean True para que toda la expresión sea True — el primer ejemplo solo se ejecuta para productos de Electrónica que además tienen realmente poco stock, no para cualquier producto con poco stock sin importar la categoría. Or requiere solo una condición True, que es como se comprueba la pertenencia a un pequeño conjunto de valores aceptables. Not simplemente invierte un resultado True/False a su opuesto — a menudo se usa, como en el tercer ejemplo, para expresar una regla como "NO la condición negativa" cuando eso resulta más natural que reformular directamente la condición positiva.

Concatenación de cadenas

Une texto con & (no +, que VBA reserva para números):

Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134

Observa que currentStock es un número (134), no texto, pero se concatena en la cadena sin ningún paso de conversión — VBA convierte automáticamente un número a su representación en texto cuando usas & con él. Esa comodidad es exactamente la razón por la que se prefiere & sobre + para unir texto: si escribieras "Stock: " + currentStock, VBA intentaría interpretar toda la expresión como aritmética y lanzaría un error o produciría un resultado confuso, dependiendo del contexto. & siempre significa "unir como texto", sin ambigüedad.

Tarea

  1. Usando los datos de Monitor Arm (Price 89.99, Stock 18, Reorder Level 10), escribe una expresión que compruebe si el stock es menor o igual al nivel de reposición más 10 — una advertencia de "acercándose" en lugar de una alerta estricta.
  2. Construye un mensaje concatenado: "Monitor Arm is at 18 units (reorder at 10)" usando variables, no texto fijo.
Sugerencia
expand arrow

1. La expresión de "acercándose"

  • Primero necesitas tres variables: una para almacenar el stock (18), otra para el nivel de reorden (10) y luego una expresión que las compare.
  • "Menor o igual que" es un solo operador de comparación <=.
  • La frase "nivel de reorden más 10" significa que no estás comparando el stock directamente contra 10, sino contra un valor calculado. Escribe esa suma directamente dentro de la comparación: stock <= reorderLevel + 10.
  • Para ver realmente el resultado, asígnalo a una variable Boolean.
  • Calcula manualmente cuánto es 10 + 10 antes de ejecutarlo, así sabrás si 18 <= 20 debe devolver True o False, y verifica que tu código coincida.

2. Construcción del mensaje

  • El operador que une textos es &, no +.
  • Observa la salida objetivo por partes: "Monitor Arm is at " + (el número de stock) + " units (reorder at " + (el nivel de reorden) + ")". Cuenta las partes: son cinco, alternando entre texto literal entre comillas y una variable.
  • La tarea dice "usando variables, no texto codificado" — eso significa que el 18 y el 10 en tu mensaje final deben provenir de tus variables de stock y reorderLevel, no escritos como números literales dentro de la cadena.
  • Concatenar un número con & no necesita conversión — VBA lo convierte automáticamente en texto, así que puedes unir una variable numérica directamente en la cadena.
  • Construye todo en una variable String primero (message = ...), luego muéstralo con MsgBox message para comprobar que coincide exactamente con la salida esperada, incluidos los paréntesis y los espacios.

O usa el siguiente código

Abre Section_2_VBA_Fundamentals.xlsm, presiona Alt+F11 y utiliza el módulo en el que has estado trabajando para este libro (inserta uno mediante Insertar → Módulo si aún no tienes uno — siguiendo el mismo patrón que modIntro en la Sección 1, podrías llamarlo modFundamentals).

Sub MonitorArmCheck()
    Dim stock As Integer
    Dim reorderLevel As Integer
    Dim isGettingClose As Boolean
    Dim message As String

    stock = 18
    reorderLevel = 10

    ' Part 1 — the "getting close" check
    isGettingClose = stock <= reorderLevel + 10
    MsgBox isGettingClose

    ' Part 2 — the concatenated message
    message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
    MsgBox message
End Sub

Haz clic en cualquier parte dentro del Sub y luego presiona F5. Deberías ver aparecer dos cuadros de mensaje uno tras otro: primero True (ya que 18 ≤ 20), luego la frase.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Trabajando con Operadores

Declarar variables te proporciona un lugar para almacenar valores. Los operadores son la forma en que combinas, comparas y pruebas esos valores; en esencia, así es como se expresa una regla de negocio en código. "¿Está el stock por debajo del nivel de reposición?" es un operador de comparación. "Reponer si el stock es bajo Y el producto es Electrónica" es un operador lógico.

Operadores aritméticos

La mayoría de estos funcionan exactamente como esperarías en una calculadora, pero VBA tiene dos operadores de división que hacen cosas realmente diferentes:

Dim total As Double
total = 45 * 3      ' multiplication → 135
total = 100 / 3     ' division → 33.33...
total = 100 \ 3     ' integer division → 33 (drops remainder)
total = 100 Mod 3   ' remainder only → 1
total = 2 ^ 3       ' exponent → 8

La barra invertida (\) y Mod son los dos que suelen confundir, porque parecen similares pero responden preguntas opuestas. 100 \ 3 responde "¿cuántas veces completas cabe el 3 en 100?" — la respuesta es 33, y lo que sobra se descarta. 100 Mod 3 responde la pregunta inversa, "¿qué sobra después de que el 3 cabe en 100 tantas veces completas como sea posible?" — la respuesta es 1. Juntos, 33 grupos de 3 más un resto de 1 suman 100 — no es coincidencia, es para lo que están diseñados estos dos operadores. Esta combinación es exactamente cómo calcularías "¿cuántas cajas completas de 3 puedo empacar y cuántas unidades quedan para una caja parcial?" o comprobar si un número de fila es par (i Mod 2 = 0).

Operadores de comparación

Estos devuelven True o False:

44 > 30      ' True
44 = 44      ' True
"Office" = "office"   ' False — VBA's default string comparison IS case-sensitive
44 <> 30     ' True (not equal)

Operadores lógicos

Estos combinan dos o más comparaciones en un solo resultado Verdadero/Falso — exactamente como se expresa una regla de negocio con múltiples condiciones:

If category = "Electronics" And stock < 30 Then
    ' triggers only if BOTH are true
End If
 
If category = "Office" Or category = "Electronics" Then
    ' triggers if EITHER is true
End If
 
If Not (stock < reorderLevel) Then
    ' triggers if stock is NOT below reorder level
End If

And requiere que todas las condiciones unidas por él sean True para que toda la expresión sea True — el primer ejemplo solo se ejecuta para productos de Electrónica que además tienen realmente poco stock, no para cualquier producto con poco stock sin importar la categoría. Or requiere solo una condición True, que es como se comprueba la pertenencia a un pequeño conjunto de valores aceptables. Not simplemente invierte un resultado True/False a su opuesto — a menudo se usa, como en el tercer ejemplo, para expresar una regla como "NO la condición negativa" cuando eso resulta más natural que reformular directamente la condición positiva.

Concatenación de cadenas

Une texto con & (no +, que VBA reserva para números):

Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134

Observa que currentStock es un número (134), no texto, pero se concatena en la cadena sin ningún paso de conversión — VBA convierte automáticamente un número a su representación en texto cuando usas & con él. Esa comodidad es exactamente la razón por la que se prefiere & sobre + para unir texto: si escribieras "Stock: " + currentStock, VBA intentaría interpretar toda la expresión como aritmética y lanzaría un error o produciría un resultado confuso, dependiendo del contexto. & siempre significa "unir como texto", sin ambigüedad.

Tarea

  1. Usando los datos de Monitor Arm (Price 89.99, Stock 18, Reorder Level 10), escribe una expresión que compruebe si el stock es menor o igual al nivel de reposición más 10 — una advertencia de "acercándose" en lugar de una alerta estricta.
  2. Construye un mensaje concatenado: "Monitor Arm is at 18 units (reorder at 10)" usando variables, no texto fijo.
Sugerencia
expand arrow

1. La expresión de "acercándose"

  • Primero necesitas tres variables: una para almacenar el stock (18), otra para el nivel de reorden (10) y luego una expresión que las compare.
  • "Menor o igual que" es un solo operador de comparación <=.
  • La frase "nivel de reorden más 10" significa que no estás comparando el stock directamente contra 10, sino contra un valor calculado. Escribe esa suma directamente dentro de la comparación: stock <= reorderLevel + 10.
  • Para ver realmente el resultado, asígnalo a una variable Boolean.
  • Calcula manualmente cuánto es 10 + 10 antes de ejecutarlo, así sabrás si 18 <= 20 debe devolver True o False, y verifica que tu código coincida.

2. Construcción del mensaje

  • El operador que une textos es &, no +.
  • Observa la salida objetivo por partes: "Monitor Arm is at " + (el número de stock) + " units (reorder at " + (el nivel de reorden) + ")". Cuenta las partes: son cinco, alternando entre texto literal entre comillas y una variable.
  • La tarea dice "usando variables, no texto codificado" — eso significa que el 18 y el 10 en tu mensaje final deben provenir de tus variables de stock y reorderLevel, no escritos como números literales dentro de la cadena.
  • Concatenar un número con & no necesita conversión — VBA lo convierte automáticamente en texto, así que puedes unir una variable numérica directamente en la cadena.
  • Construye todo en una variable String primero (message = ...), luego muéstralo con MsgBox message para comprobar que coincide exactamente con la salida esperada, incluidos los paréntesis y los espacios.

O usa el siguiente código

Abre Section_2_VBA_Fundamentals.xlsm, presiona Alt+F11 y utiliza el módulo en el que has estado trabajando para este libro (inserta uno mediante Insertar → Módulo si aún no tienes uno — siguiendo el mismo patrón que modIntro en la Sección 1, podrías llamarlo modFundamentals).

Sub MonitorArmCheck()
    Dim stock As Integer
    Dim reorderLevel As Integer
    Dim isGettingClose As Boolean
    Dim message As String

    stock = 18
    reorderLevel = 10

    ' Part 1 — the "getting close" check
    isGettingClose = stock <= reorderLevel + 10
    MsgBox isGettingClose

    ' Part 2 — the concatenated message
    message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
    MsgBox message
End Sub

Haz clic en cualquier parte dentro del Sub y luego presiona F5. Deberías ver aparecer dos cuadros de mensaje uno tras otro: primero True (ya que 18 ≤ 20), luego la frase.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2
some-alt