Ir al contenido principal

Ejercicio Condicionales usando Macros en Excel


La toma de decisiones es determinante en la secuencia de ejecución de una macro. Las herramientas que proporciona VBA para la toma de decisiones descansan en los condicionales. Un ejemplo de estructuras condicionales en Excel es la función "SI", la cual permite hacer una prueba lógica y tomar generar dos resultados posibles dependiendo si la prueba lógica es verdadera o falsa. "SI su estatura en metros es superior a 1.5 mts, puede ingresar a la montaña rusa, de lo contrario NO". En la afirmación anterior solo aquellos niños con una estatura superior a 1.5 tendrán acceso al juego mecánico, los demás niños simplemente estarán excluidos del juego hasta que cumplan el requisito de forma imperativa.

El lenguaje de macros permite 3 estructuras condicionales distintas:

a) IIF(prueba_lógica, verdadero, falso). Su resultado obligatoriamente debe asignarse a una variable

variable = IFF(3>1, "Verdadero", "Falso"). El tipo de variable puede ser numero, texto, etc...


b)  If(prueba_lógica) then
            Instrucciones en caso de verdadero
      End If

La estructura anterior obebliga a que la prueba lógica se cumpla y así permitir la ejecución de las instrucciones en su interior. En caso contrario no las ejecuta y sigue con las instrucciones fuera de la estructura condicional.

c)  If(prueba_lógica) then
            Instrucciones en caso de verdadero
      Else
             Instrucciones en caso de falso o NO verdadero

      End If

Este tipo de estructura da una alternativa de ejecución en caso que la prueba lógica no se cumpla.

En la clase anterior propusimos el desarrollo de los siguientes ejercicios tomados de http://www.cybercursos.net.

Ejercicio 1

Restar los valores de las casilla A1 y A2. Guardar el resultado en A3. Si el resultado es positivo o 0, poner la fuente de A3 en azul, sino ponerla en rojo.

Solución
Sub Condicional_Else2()
    ActiveSheet.Range("A3").Value = AvtiveSheet.Range("A1").Value - _
    ActiveSheet.Range("A2").Value
    If ActiveSheet("A3").Value < 0 Then
        ActiveSheet.Range("A3").Font.Color = RGB(255,0,0)
    Else
        ActiveSheet.Range("A3").Font.Color = RGB(0,0,255)
    End If
End Sub

Ejercicio 2

Comparar los valores de las casilla A1 y A2 de la hoja activa. Si son iguales, escribir en A3 "Los valores de A1 y A2 son iguales", si el valor de A1 es mayor que A2, escribir "A1 mayor que A2", sino, escribir "A2 mayor que A1".

Solución
Sub Condicional()
    If ActiveSheet.Range("A1").Value = ActiveSheet.Range("A2").Value Then
        ActiveSheet.Range("A3").Value = "Los Valores de A1 y A2 son iguales"
    Else
        If ActiveSheet.Range("A1").Value > ActiveSheet.Range("A2").Value Then
            ActiveSheet.Range("A3").Value = "A1 mayor que A2"
        Else
            ActiveSheet.Range("A3").Value = "A2 mayor que A1"
        End If
    End If
End Sub

Comentarios

  1. Hola!! Si yo quisiera programar en VBA una condición para una macro que diera formato condcional a un rango determinado de celdas, según el parámetro "si las celdas contiguas tienen igual valor", como deberia hacer?
    Es decir, si A3 es igual a B3, si F8 es igual a G8, etc...

    ResponderEliminar
  2. HOLA SE PUEDE UTILIZAR UN CONDICIONAL "Y" PARA MACROS, AGRADEZCO TU AYUDA

    ResponderEliminar
  3. HOLA SE PUEDE UTILIZAR UN CONDICIONAL "Y" PARA MACROS, AGRADEZCO TU AYUDA

    ResponderEliminar

Publicar un comentario

Entradas más populares de este blog

Buscar en Excel usando Desref y Coincidir

Si bien la función BuscarV resulta de gran ayuda a la hora de las búsquedas, existen otras funciones que aunque propiamente no se especialicen en buscar, pueden utilizarse para ejecutar búsquedas. En el post anterior hablamos de Indice y Coincidir, en este post quiero mostrar cómo utilizar la función Desref en compañia de Coincidir. 
Función Desref: regresa un rango a partir de una referencia dada. Este rango puede ser una sola celda o varias celdas
=DESREF(Ref;Filas;Columnas;[Ancho];[Alto])
Argumentos:
Ref: Es la referencia desde la cual desref hará el cálculo de cuantas filas y colunmas voy a incluir en el rango que deseo seleccionar o que requiero obtener como resultado de la función.
Filas: Numero de filas que cuenta desref a partir de Ref. Puede ser un número negativo o positivo. Positivo contará filas hacia abajo y negativo hacia arriba.
Columnas: Numero de columnas que cuenta desref a partir de Ref. Puede ser un número negativo o positivo. Positivo contará columnas a la dere…