Instrucciones y funciones en LibreOffice Basic

Recuerdas que mencionamos que existen palabras claves o reservadas de LibreOffice Basic. Por ello, no puedes crear una macro que se llame MsgBox u Option, tampoco puedes declarar variables con alguna de estas palabras.

Estas palabras clave, las podemos dividir en dos grandes grupos: las instrucciones y las funciones, que, como primer aproximación a una definición útil, diremos que:

Las instrucciones “hacen” algo
Las funciones “devuelven” algo

La diferencia entre una y otra es crucial para el entendimiento y desarrollo óptimo de los siguientes capítulos. Usaremos una instrucción que ya conoces, MsgBox, para mostrarte las diferencias entre las instrucciones y las funciones.

Esta palabra clave tiene la particularidad de poder usarse como una u otra dependiendo de nuestras necesidades. Veamos la siguiente línea de código.

Estamos usando MsgBox como una instrucción porque está “haciendo” algo. Nos muestra un mensaje de texto en pantalla, una “cadena de texto”, que la indicamos entre comillas. Esta cadena de texto recibe el nombre de parámetro o argumento. ¿Has intentado ejecutar esta instrucción sin ningún argumento?

Efectivamente, nos regalará con un gran mensaje de error.

Efectivamente, el IDE nos muestra el siguiente error: Acción no admitida. Llamada a procedimiento no válida. Y nos señalará con la flecha que ya conoces la línea del error, en este caso la línea con la instrucción MsgBox. Con lo cual se deduce fácilmente que el argumento Mensaje, que es de tipo “cadena de texto”, es necesario o requerido (es decir, no trabajará mientras no lo incorporemos a la línea de código).

Puede llevar más argumentos, por ejemplo, prueba la siguiente línea de código y observa el resultado.

Prueba ahora con esto:

¿Ves alguna diferencia?

El segundo argumento que se llama Tipo, el cual es un número entero. Para la señal de prohibición usamos el 16, para el icono de interrogación ponemos un 32, el icono de exclamación es 48 y el icono de información 64.

La instrucción MsgBox, tiene un tercer argumento opcional que se llama título, el cual permite personalizar. El título del cuadro de diálogo hasta ahora en todas dicen LibreOffice 6.4.4.2 que es la versión de LibreOfice actual, compruébalo. Pero podemos personalizarlo mediante este tercer argumento. Prueba esto:

En cada ventana que pulsa Aceptar y verás los tipos de avisos en cada ventana.

Estos son los tres argumentos que puede usar la instrucción MsgBox: Mensaje, Tipo y Título. La sintaxis completa y correcta de esta instrucción es:

MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String]

Lo importante aquí es que aprendas a distinguir la estructura o sintaxis de una instrucción. Observa cómo los argumentos se separan por comas y los argumentos opcionales se encierran entre corchetes.

Además, y muy importante, observa que se especifica el tipo de dato que se espera se use en el argumento. Pasarle a un argumento un tipo de dato que no es el que espera puede producir errores o resultados imprevisibles.

Regresemos al argumento Tipo, y veamos que también podemos establecer los botones de comando que queramos se muestren en el cuadro de diálogo, aquí está la lista completa de estas opciones:

Veamos un ejemplo:

Que mostrará:

Cuando quieras mostrar una combinación de botones e iconos simplemente establece el argumento Tipo como una suma de los valores que quieres mostrar. Las dos líneas siguientes son equivalentes:

Que mostrará:

Y apuesto a que ya te hiciste la pregunta interesante: ¿cómo sabemos qué botón es el que presionó el usuario? La respuesta es sencilla: usaremos MsgBox, pero ahora como función.

Para ello tienes que recordar que: una función devuelve un valor, el cual guardaremos en una variable; segundo, la variable donde guardemos el valor es muy importante que sea del mismo tipo que el que nos devuelva la función.

En las funciones los argumentos van siempre entre paréntesis. Las funciones van asignadas a una variable y para ello necesitamos usar el signo igual. Como resultado, la estructura completa de la función MsgBox queda así:

Variable As Integer = MsgBox (Mensaje As String, [Tipo As Integer], [Titulo As String])

Recordemos, ya que es muy importante, que la variable debe ser declarada del mismo tipo que el valor que esperamos devuelva la función. En este caso la función MsgBox, devuelve un entero (Integer), por lo que la variable donde se guarda el valor de retorno debe ser declarada como tipo entera (Integer).

Veamos el ejemplo anterior, completo, ya con su variable de retorno:

Al ejecutarlo mostrará un cuadro de diálogo con el valor de la opción elegida, que corresponde a la variable Respuesta. Esta es la lista completa de los valores que puede retornar la función MsgBox:

No creas que está mal la lista, el botón Cancelar puede regresar un valor 2 o 3 dependiendo de con qué otros botones se muestre.

Cuanto más conozcas y domines las instrucciones y funciones de LibreOffice Basic, más rápido y productivo serás. Lo verdaderamente importante es que aprendas a reconocer la sintaxis y estructura de cualquier instrucción o función; no es necesario aprenderse todo esto de memoria, bastará con consultar manuales o la misma ayuda del programa.

Más adelante aprenderemos a crear nuestras propias instrucciones que aquí llamaremos subrutinas y también nuestras propias funciones.

  • Prueba a combinar los diferentes valores del argumento Tipo, observa los resultados.