Modul
Innhold
Innholdsliste 🔎︎

# Bruk av prosedyrer og funksjoner

I dette avsnittet finner du grunnleggende informasjon om bruk av variabler i LibreOffice Basic.

Når du oppretter en ny modul, legger LibreOffice Basic automatisk en SUB kalt "Main". Dette standardnavnet har ingenting å gjøre med ordren eller utgangspunktet for et LibreOffice Basic-prosjekt. Du kan også endre navn på denne SUB-en.

Visse restriksjoner gjelder for hvilke navn de offentlige (public), variablene, prosedyrene (Sub) og funksjonene kan ha. De kan ikke ha samme navnet som moduler i det samme biblioteket.

Bruk av prosedyrer (SUBS) og funksjoner (FUNCTIONS) vil hjelpe deg med å holde en strukturell oversikt ved at programmet blir inndelt i logiske deler.

En fordel med prosedyrer og funksjoner er at når du har utviklet en programkode som inneholder oppgavekomponenter, kan du bruke denne koden i et annet prosjekt.

## Å overføre variabler til prosedyrer (SUB) og funksjoner (FUNCTION)

Variabler kan overføres til både prosedyrer og funksjoner. SUB eller FUNKSJON må erklæres for å forvente parametere:

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

    Programkode

    End Sub

En SUB blir aktivert med denne syntaksen:

    SubName(Value1, Value2,...)

Parametrene som sendes til en SUB, må være av samme slag som er angitt i SUB-deklarasjonen.

Den samme prosessen gjelder for FUNKSJONER. I tillegg gir funksjonene alltid et funksjonsresultat. Resultatet av en funksjon er definert ved å tildele returverdi til funksjonsnavnet:

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

    Programkode

    FunctionName=Result

    End Function

FUNKSJONEN kalles ved hjelp av følgende syntaks:

    Variabel = Funksjonsnavn(Parameter1, Parameter2, …)

Du kan også bruke det fullt kvalifiserte navnet til å kalle en prosedyre eller funksjon:
Library.Module.Macro()
For eksempel å ringe til Autotext-makroen fra Gimmicks bibliotek, bruk følgende kommando:
Gimmicks.AutoText.Main()

## Å overføre variabler som verdi eller referanse

Parametre kan sendes til en SUB eller en FUNKSJON enten ved referanse eller etter verdi. Med mindre annet er spesifisert, blir en parameter alltid overført via en referanse. Det betyr at en SUB eller en FUNKSJON får parameteren og kan lese og endre verdien.

Hvis du vil sende en parameter etter verdi, sett inn nøkkelordet "ByVal" foran parameteren når du kaller SUB eller FUNKSJON, for eksempel:

    Result = Function(ByVal Parameter)

I dette tilfellet vil det opprinnelige innholdet i parameteret ikke bli endret av FUNCTION siden det bare får verdien og ikke parameteret selv.

## Variabelområde

En variabel definert i SUB eller FUNKSJON, forblir bare gyldig til prosedyren er avsluttet. Dette er kjent som en "lokal" variabel. I mange tilfeller trenger du en variabel for å være gyldig i alle prosedyrer, i alle moduler i alle biblioteker, eller etter at SUB eller FUNKSJON er avsluttet.

### Deklarering av variabler utenfor en SUB eller en FUNCTION

    Global Variabelnavn som TYPENAME

Variabelen er gyldig så lenge LibreOffice-økten varer.

    Public Variabelnavn som TYPENAME

Variabelen er gyldig i alle modulene.

    Private Variabelnavn som TYPENAME

Variabelen er kun gyldig i denne modulen.

    Dim Variabelnamn som TYPENAME

Variabelen er kun gyldig i denne modulen.

### Eksempel på private variabler

Tving private variabler til å være private på tvers av moduler med innstillingen CompatibilityMode(true).

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

    Private myText As String

    Sub initMyText

        minTekst = "Hallo"

        Print "I modul1: ", minTekst

    End Sub

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

    'Option Explicit

    Sub demoBug

        CompatibilityMode( true )

        initMyText

        ' Returnerer nå ein tom streng

        ' (eller det oppstår feil for Option Explicit)

        Print "Nå i modul2: ", minTekst

    End Sub

### Å lagre innholdet av en variabel etter at en SUB eller FUNCTION er avsluttet

    Static Variabelnamn som TYPENAME

Variabelen beholder verdien sin til neste gang FUNKSJON eller SUB blir brukt. Erklæringen må eksistere inne i en SUB eller en FUNKSJON.

## Spesifiserer returverdien for en FUNCTION

Som med variabler, inkluder en typedeklarasjonskarakter etter funksjonsnavnet eller typen som er angitt med "As" og det tilsvarende nøkkelordet på slutten av parameterlisten for å definere typen av funksjonens returverdi, for eksempel:

    Function WordCount(WordText As String) As Integer