Uso de procedimientos y funciones

A continuación se describe el uso básico de los procedimientos y las funciones en LibreOffice Basic.

Icono de nota

Cuando se crea un módulo nuevo, LibreOffice Basic inserta automáticamente una SUB llamada «Main». Este nombre predeterminado no tiene nada que ver con el orden o el punto de inicio de un proyecto de LibreOffice Basic. Se puede cambiar sin problemas.


Icono de nota

Se aplican algunas restricciones para los nombres de sus variables públicas, procedimientos y funciones. No debe utilizar el mismo nombre que uno de los módulos de la misma biblioteca.


Los procedimientos (SUBS) y las funciones (FUNCTIONS) ayudan a mantener un aspecto estructurado al separar un programa en partes lógicas.

Una ventaja de los procedimientos y las funciones es que en cuanto se desarrolla un código de programa que contiene componentes de tarea, este puede usarse en otro proyecto.

Pase de variables a procedimientos (SUB) y funciones (FUNCTION)

Las variables pueden pasarse a procedimientos y funciones. Cualquier SUB o FUNCTION debe estar declarado para que se le puedan pasar parámetros:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Código del programa
End Sub

A SUB se le llama mediante la sintaxis siguiente:


SubName(Value1, Value2,...)

Los parámetros que se pasan a SUB deben coincidir con los especificados en la declaración de SUB.

El mismo proceso se aplica a las funciones. Además las funciones siempre devuelven un resultado. El resultado de la función se define asignando el valor de retorno al nombre de la función


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Código del programa
NombreFuncion=Resultado
End Function

A FUNCTION se la llama mediante la sintaxis siguiente:


Variable=NombreFunción(Parámetro1, Parámetro2,...)
Icono de consejo

Asimismo, puede utilizar el nombre completo para llamar a un procedimiento o función:
Library.Module.Macro()
Por ejemplo, para llamar a la macro «AutoText» de la biblioteca Gimmicks, utilice la orden siguiente:
Gimmicks.AutoText.Main()


Pase de variables por valor o por referencia

Los parámetros pueden pasarse a una SUB o una FUNCTION por referencia o por valor. A menos que se especifique de otra forma, los parámetros siempre se pasan por referencia. Esto significa que la SUB o FUNCTION obtienen el parámetro y pueden leer y modificar su valor.

Para pasar un parámetro por valor se inserta la palabra clave "ByVal" delante del parámetro cuando se llama a una SUB o FUNCTION, por ejemplo:


Resultado = Función(ByVal Parámetro)

En este caso, la función no modificará el contenido original del parámetro ya que solo obtiene el valor y no el parámetro en sí.

Ámbito de variables

Una variable definida dentro de una SUB o FUNCTION es válida solo hasta el momento en que finaliza el procedimiento. Esto se conoce como variable «local». Sin embargo, en muchos casos necesitará una variable que permanezca válida en todos los procedimientos, en cada uno de los módulos de las bibliotecas, o bien después de que finalice una SUB o FUNCTION.

Declaración de variables desde fuera de SUB o FUNCTION


Global NombreVariable As TYPENAME

La variable es válida durante toda la sesión de LibreOffice.


Public NombreVariable As TYPENAME

La variable es válida en todos los módulos.


Private NombreVariable As TYPENAME

La variable solo es válida en este módulo.


Dim NombreVariable As TYPENAME

La variable solo es válida en este módulo.

Ejemplo para variables privadas

Fuerce las variables privadas a permanecer como tales en otros módulos estableciendo CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    miTexto = "Hola"
    Print "En módulo1 : ", miTexto
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Ahora devuelve una cadena vacía
    ' (o produce un error con Option Explicit)
    Print "Ahora en módulo2 : ", miTexto
End Sub

Guardar elcontenido de las variables después de salir de SUB o FUNCTION


Static NombreVariable As TYPENAME

La variable conserva su valor hasta la próxima vez que se entre en la FUNCTION o SUB. La declaración debe existir dentro de SUB o FUNCTION.

Especificar el tipo de valor de retorno de una FUNCTION

Al igual que con las variables, incluya un carácter de declaración de tipo después del nombre de la función o el tipo indicado por "As" y la palabra clave correspondiente al final de la lista de parámetros para definir el tipo del valor de retorno de la función, por ejemplo:


Function WordCount(WordText As String) As Integer

¡Necesitamos su ayuda!