Utilizar procedimentos e funções

Esta parte descreve o uso básico de procedures e funções no LibreOffice Basic.

Ícone Nota

Quando você cria um novo módulo, o LibreOffice Basic automaticamente insere uma SUB chamada "Main". Esse nome padrão não tem nada a ver com a ordem nem com o ponto de início de um projeto do LibreOffice Basic. Você também pode renomear essa SUB de forma segura.


Ícone Nota

Algumas restrições se aplicam para os nomes de suas variáveis públicas, subs e functions. Você não deve utilizar o mesmo nome que os de módulos da mesma biblioteca.


Os procedimentos (SUBS) e as funções (FUNCTIONS) ajudam você a manter uma visão geral estruturada, separando um programa em partes lógicas.

Um benefício da utilização de procedures e funções é que, uma vez desenvolvido um código de programa contendo componentes de tarefas, você pode usar este código em outro projeto.

Passar variáveis para procedimentos (SUB) e funções (FUNCTION)

É possível passar variáveis tanto para procedimentos como para funções. É necessário declarar uma SUB ou a FUNCTION para esperar os parâmetros:

Sub SubName(Parameter1 As Type, Parameter2 As Type,...)

Código do programa

End Sub

A SUB é chamada usando-se a seguinte sintaxe:

SubName(Value1, Value2,...)

Os parâmetros passados para uma SUB devem corresponder aos especificados na declaração da SUB.

O mesmo processo se aplica às FUNCTIONS. Além disso, as funções sempre retornam um resultado. O resultado é definido atribuindo-se o valor de retorno ao nome da função:

Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type

Código do programa

FunctionName=Result

End Function

Para chamar uma FUNCTION, use seguinte sintaxe:

Variable=FunctionName(Parameter1, Parameter2,...)

Ícone Dica

Você também pode usar o nome qualificado para chamar um procedimento ou função:
Library.Module.Macro()
Por exemplo, para executar a macro Autotext da biblioteca Gimmicks, use o comando a seguir:
Gimmicks.AutoText.Main()


Passar variáveis por valor ou referência

Os parâmetros podem ser passados para uma SUB ou FUNCTION por referência ou por valor. A menos que especificado de outra forma, o parâmetro é sempre passado por referência. Isso significa que uma SUB ou FUNCTION obtém o parâmetro e pode ler e modificar seu valor.

Para passar um parâmetro por valor, quando você chamar uma SUB ou FUNCTION, insira a palavra-chave "ByVal" na frente do parâmetro, por exemplo:

Result = Function(ByVal Parameter)

Neste caso, o conteúdo original do parâmetro não será modificado pela FUNCTION, já que ele obtém apenas o valor, e não o parâmetro propriamente dito.

Escopo das variáveis

Uma variável definida dentro de uma SUB ou FUNCTION só permanecerá válida até que o procedimento seja finalizado. Ela é conhecida como uma variável "local". Em muitos casos, você precisará de uma variável que seja válida em todos os procedimentos, em cada módulo de todas as bibliotecas ou depois que a SUB ou FUNCTION for encerrada.

Declarar variáveis fora de uma SUB ou FUNCTION

Global VarName As TYPENAME

A variável é válida enquanto durar a sessão do LibreOffice.

Public VarName As TYPENAME

A variável é válida em todos os módulos.

Private VarName As TYPENAME

A variável é válida somente neste módulo.

Dim VarName As TYPENAME

A variável é válida somente neste módulo.

Exemplo de variáveis private

Force as variáveis de natureza privada a se manterem privadas entre os módulos ao definir CompatibilityMode(true).

' ***** Module1 *****

Private myText As String

Sub initMyText

    myText = "Olá"

    Print "no módulo 1 : ", myText

End Sub

 

' ***** Module2 *****

'Option Explicit

Sub demoBug

    CompatibilityMode( true )

    initMyText

    ' Retorna agora uma string vazia

    ' (ou sinaliza um erro para Option Explicit)

    Print "Agora no módulo2 : ", myText

End Sub

Salvar o conteúdo de uma variável após a finalização de uma SUB ou FUNCTION

Static VarName As TYPENAME

A variável retém o seu valor até a próxima vez que a Function ou Sub for chamada. A declaração deve existir dentro de uma Sub ou uma Function.

Especificar o tipo do valor de retorno de uma FUNCTION

Da mesma forma como você faz com as variáveis, inclua um caractere de declaração de tipo após o nome da função, ou o tipo indicado por "As" e a palavra-chave correspondente no final da lista de parâmetros para definir o tipo do valor de retorno da função, por exemplo:

Function WordCount(WordText As String) As Integer