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
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?
ResponderBorrarEs decir, si A3 es igual a B3, si F8 es igual a G8, etc...
HOLA SE PUEDE UTILIZAR UN CONDICIONAL "Y" PARA MACROS, AGRADEZCO TU AYUDA
ResponderBorrarHOLA SE PUEDE UTILIZAR UN CONDICIONAL "Y" PARA MACROS, AGRADEZCO TU AYUDA
ResponderBorrarHOLA COMO QUEDARÍA DESARROLLADO EN UNA MACRO DOS CONDICIONANTES SI MIS FORMULAS DE EXCEL SON DENTRO DE UNA BASE DE DATOS
ResponderBorrar1.- =SI(D8="R",(P8/16)*6,0)
2.- =SI(AL8=2,"CANCELADO","SI")