Bifurcaciones

From Apache OpenOffice Wiki
Jump to: navigation, search

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



ES.Plantillas.Logo foro es.png
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

Personal tools