Bifurcaciones
Contents
Qué son y para qué sirven
¿Te has puesto a pensar cuantas decisiones tomas al día? La vida esta hecha de decisiones, o eso dicen, y en las macros no nos salvamos de ellas; casi siempre hay que estar decidiendo algo y de acuerdo a esa decisión tomamos uno u otro camino. Afortunadamente en OOo Basic es mucho más sencillo que en la vida. Veamos como hacerlo.
Un pregunta importante: ¿Quieres ser mi novia?
Si responde que “no” ¿que hago?, pero ¿y si dice que “sí”? Preguntémosle.
Option Explicit Sub Novios Dim Respuesta As Integer Respuesta = MsgBox( "¿Quieres ser mi novia?", 32 + 4, "Novios" ) MsgBox Respuesta End Sub
En la macro anterior únicamente estamos obteniendo la información del botón que seleccionó el usuario: en la variable Respuesta tendremos un 6 si pulsó el botón Sí o un 7 si pulsó el botón No , de acuerdo a los valores que ya vimos en Instrucciones y funciones en OOo Basic.
Instrucción If... Then... Else
Dado que sabemos que botón eligió el usuario podremos actuar en consecuencia, dependiendo de su respuesta, gracias a la instrucción If...Then...Else. Veamos su uso.
Sub Novios Dim Respuesta As Integer 'La pregunta importante Respuesta = MsgBox( "¿Quieres ser mi novia?", 32 + 4, "Novios" ) 'Evaluamos la respuesta, recuerda, un 7 es igual No If Respuesta = 7 Then MsgBox "Pues no sabes lo que te pierdes" End If End Sub
Con esta macro solo podemos actuar cuando se presionó el botón No . Para actuar también si se presionó el botón Sí , modificaremos la macro.
Sub Novios Dim Respuesta As Integer 'La pregunta importante Respuesta = MsgBox( "¿Quieres ser mi novia?", 32 + 4, "Novios" ) 'Evaluamos la respuesta, recuerda, un 7 es igual No If Respuesta = 7 Then MsgBox "Pues no sabes lo que te pierdes" Else 'Cualquier otro valor diferente del que se evalúa en la condición MsgBox "Que inteligente eres" End If End Sub
Ahora sí que actuamos en consecuencia a cada uno de los botones de nuestro cuadro de dialogo.
La instrucción Else, significa en cualquier otro caso, es decir, en nuestro ejemplo, si el valor de la variable Respuesta era 7, la ejecución continua en la línea siguiente, pero si la variable tiene cualquier otro valor, entonces hace lo segundo, aquí un ejemplo.
Sub DiaDeLaSemana Dim Dia As Integer 'Solicitar un numero digamos entre 1 y 10 Dia = InputBox( "¿Que día quieres saber (1 a 10)?" ) If Dia = 1 Then MsgBox "Este día es Domingo" Else MsgBox "Este día NO es Domingo" End If End Sub
Observa como sólo si Dia toma el valor 1 se nos informa que es Domingo; cualquier otro valor nos muestra el segundo mensaje.
Instrucción If... Then... Elseif … Then... Else
Si queremos saber que día de la semana corresponde a otro valor, usaremos una variante de la instrucción If...Then...Else. veamos como.
Sub DiaDeLaSemana Dim Dia As Integer 'Solicitar un numero digamos entre 1 y 10 Dia = InputBox( "¿Que día quieres saber (1 a 10)?" ) If Dia = 1 Then MsgBox "Este día es Domingo" ElseIf Dia = 2 Then MsgBox "Este día es Lunes" Else MsgBox "NO sé que día es" End If End Sub
De esta forma podemos hacer tantas comparaciones como queramos. Intenta completar la macro tú mismo para que nos informe de todos los días de la semana y en caso de otro valor nos informe que no es un día de la semana.
Resumiendo: la estructura general de la instrucción If...Then...Else es.
If CONDICION Then 'Código si condición es verdadera [ElseIf CONDICION_2 Then] 'Código si condición 2 es verdadera … [ElseIf CONDICION_n Then] 'Código si condición n es verdadera [Else] 'Cualquier otro valor End If
Recuerda que las opciones indicadas entre corchetes son opcionales.
CONDICION, puede ser cualquier instrucción susceptible de ser evaluada como verdadera (True) o falsa (False) y puede ser tan sencilla como las vistas hasta ahora, o compleja como la del siguiente ejemplo:
ElseIf bolHayComillas = False And (strPalabra = "'" Or UCase(strPalabra) = "REM") Then ElseIf EsPalabraClave(strPalabra) And bolHayComillas = False Then
Si se necesita evaluar más de una condición, debemos relacionarlas con operadores como And (y) o como Or (o) que veremos más adelante.
Instrucción Select...Case
Cuando necesitamos evaluar la misma variable varias veces es posible usar la instrucción de bifurcación Select...Case. Veamos un ejemplo.
Sub DiaDeLaSemana Dim Dia As Integer Dia = InputBox( "¿Que día quieres saber (1 a 10)?" ) Select Case Dia Case 1 MsgBox "Este día es Domingo" Case 2 MsgBox "Este día es Lunes" Case 3 MsgBox "Este día es Martes" Case 4 MsgBox "Este día es Miércoles" Case Else MsgBox "NO sé que día es" End Select End Sub
Se pueden indicar rangos de valores a evaluar:
- Separados por una coma (por ejemplo 1,3,7)
- Utilizando la palabra clave To (por ejemplo, 2 To 5):
Sub DiaDeLaSemana Dim Dia As Integer Dia = InputBox( "¿Que día quieres saber (1 a 10)?" ) Select Case Dia 'Aquí evaluamos si es sábado o domingo Case 1, 7 MsgBox "Por fin a descansar" 'Y aquí si es entre semana, de Lunes a Viernes Case 2 To 6 MsgBox "Que horror, día de trabajo" Case Else MsgBox "NO sé que día es" End Select End Sub
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO, o quieres ampliar la información, no dudes en dirigirte al Foro Oficial en español de Apache OpenOffice para Macros y API UNO |