Modul
Indhald
Innhaldsliste 🔎︎

# Bruka variablar

I dette avsnittet finn du grunnleggjande informasjon om bruk av variablar i LibreOffice Basic.

## Namnereglar for variabelnamn

Eit variabelnamn kan innehalda maksimalt 256 teikn. Det første teiknet i eit variabelnamn må vera ein bokstav i det engelske alfabetet A-Z eller a-z. Dei andre teikna kan vera ein bokstav, eit tal eller understrek («_»). Ingen andre teikn er tillatne. LibreOffice Basic skil ikkje mellom store og små bokstavar i variabelnamna. Eit variabelnamn kan også innehalda mellomrom, men må då skrivast mellom hakeparentesar.

Eksempel på variabelnamn:

          MyNumber=5
| Rett
          MyNumber5=15
| Rett
          MyNumber_5=20
| Rett
          My Number=20
| Ugyldig. Variabelnamn med mellomrom må skrivast mellom hakeparentesar
          [My Number]=12
| Rett
          DéjàVu=25
| Ugyldig. Variabelnamn kan ikkje innehalda spesialteikn. (Også æ, ø og å er i denne samanhengen spesialteikn).
          5MyNumber=12
| Ugyldig. Eit variabelnamn kan ikkje byrja med eit tal.
          Number,Mine=12
| Ugyldig. Interpunksjonsteikn er ikkje tillatne.

## Deklarera variablar

I LibreOffice Basic treng du ikkje definera variablane eintydig. Ein variabel kan definerast med uttrykket Dim. Du kan også definera fleire variablar samstundes ved å skilja namna med komma. For å definera ein variabeltype, brukar du anten eit typedeklareringsteikn etter namnet eller det tilsvarande nøkkelordet.

Eksempel på variabeldeklarasjonar:

          Dim a$
| Deklarerer variabelen «a» som ein streng
          Dim a As String
| Deklarerer variabelen «a» som ein streng
          Dim a$, b As Integer
| Definerer éin variabel som ein streng og ein annan som eit heiltal
          Dim c As Boolean
| Deklarerar c som ein boolsk (logisk) variabel som kan vera SANN eller USANN

Dersom du brukar typedeklarasjonsteiknet når du definerer ein variabel, er det svært viktig at du brukar dette teiknet kvar gong variabelen vert brukt, sjølv om det er brukt i deklarasjonen i staden for eit nøkkelord. Difor er dette uttrykket ugyldig:

          Dim a$
| Deklarer "a" som ein streng
          a="TestString"
| Typedeklareringa manglar: "a$="

Når du har deklarert ein variabel som ein bestemt type, kan du ikkje deklarera ein annan variabel med det same namnet som ein annan type.

### Tving variabeldeklarasjonar

For tvingande deklarasjon av ein variabel, bruk denne kommandoen:

    Option Explicit

Uttrykket Option Explicit må vera på den første linja i modulen, framføre den første SUB-prosedyren. Normalt skal berre tabellar («array») deklarerast spesielt. Alle andre variablar vert deklarerte med typedeklarasjonsteiknet eller, dersom dette er sløyfa, som standardtypen Single.

## Variabeltypar

LibreOffice Basic har støtte for fire variabelklassar:

- Numeriske variablar inneheld talverdiar. Variablane vert brukte til å lagra store eller små tal, desimaltal eller brøk.

- Streng-variablane inneheld teiknstrengar (tekst).

- Logiske variablar kan ha verdiane SANN (TRUE) eller USANN (FALSE).

- Object-variablane kan lagra ulike typar objekt som t.d. tabellar og dokument i eit dokument.

### Heiltalsvariablar (Integer)

Ein heiltalsvariabel kan ha ei verdi mellom -32 768 og 32 767. Dersom du legg eit desimaltal inn i ein heiltalsvariabel, vert talet avrunda til næraste heiltal. Ein heiltalsvariabel brukar berre to byte i minnet. Difor går utrekningane svært raskt. Denne variabeltypen passar såleis bra som teljarvariablar i løkker. Typedeklarasjonsteiknet er «%».

    Dim Variable%
    Dim Variable As Integer

### Variabeltypen Long

Variabeltypen Long Integer kan ha ein verdi frå -2.147.483.648 til 2.147.483.647. Viss eit desimaltal vert lagt inn i ein Long variabel (32 bit), vert verdien avrunda til næraste heiltal. Eit Long heiltal er nokså raskt å arbeida med og kan brukast mellom anna som teljar i sløyfer (loop). Eit Long heiltal krev fire byte i minnet. Typedeklarasjonsteiknet er «&».

    Dim Variable&
    Dim Variable As Long

### Desimalvariablar

Desimalvariablane kan ha positive eller negative tal og null. Presisjonen er opp til 29 siffer.

Du kan bruka pluss (+) eller minus (-) framføre desimaltal, med eller utan mellomrom.

Viss eit desimaltal vert lagt til ein heiltalsvariabel, vil LibreOffice Basic runda av talet opp eller ned.

### Variabeltypen Single

Variabeltypen Single kan ta positive eller negative tal mellom 3.402823 × 10E38 og 1.401298 × 10E-45. Single er flyttal der talet på desimalar minkar når heiltalsdelen aukar. Variablar av denne typen høver bra å bruka til matematiske operasjonar som ikkje treng vere svært nøyaktige. Utrekningar med variabeltypen Single tar litt meir tid enn for utrekningar med variablar av typen Integer, men er raskare enn variablar av typen Double. Ein Single variabel krev 4 byte av minnet. Typedeklerasjonsteiknet er «!».

    Dim Variable!
    Dim Variable As Single

### Variabeltypen Double

Variablar av typen Double kan innehalda verdiar i området 1.79769313486232 × 10E308 til 4.94065645841247 × 10E-324. Variablane er desimaltal der talet på desimalar minkar når heiltalsdelen aukar. Denne variabeltypen er vél eigna til utrekningar som må vere mest mogleg nøyaktige. Ein slik variabel brukar 8 byte av minnet, og krev såleis meir tid under utrekningane enn ein heiltalsvariabel. Typedeklarasjonsteiknet er «#».

    Dim Variable#
    Dim Variable As Double

### Valutavariablane

Valutavariablane vert lagra internt som 64-bits tal (8 byte) og vert viste som eit fast desimaltal med 15 heiltalsplassar og 4 desimalar. Verdiane kan vere frå -922.337.203.685.477,5808 til +922.337.203.685.477,5807. Valutavariablane vert brukte til å rekne ut valutaverdiar med høg presisjon. Typedeklarasjonsteiknet er «@».

    Dim Variable@
    Dim Variable As Currency

### Strengvariablar

Strengvariablane (variablar av typen String) er tekststrengar med opp til 65.535 teikn (64 kb). Kvart teikn vert lagra som Unicode-verdi. Strengvariablane vert brukte for å handtera tekst i program og for mellomlagring av ikkje-skrivbare teikn. Kor mykje minneplass ein streng brukar, er avhengig av kor mange teikn strengen inneheld. Typedeklarasjonsteiknet er «$».

    Dim Variable$
    Dim Variable As String

### Logiske variablar (av type Boolean)

Logiske variablar kan innehalda ein av to verdiar: SANN (TRUE) og USANN (FALSE). Talet 0 representerer USANN, alle andre verdiar gjev SANN.

    Dim Variable As Boolean

### Datovariablar (av type Date)

Datovariablar kan berre innehalda verdiar for datoar og klokkeslett. Verdiane vert lagra i eit internt format. Verdiar som er tilordna datovariablar med Dateserial, Datevalue, Timeserial eller Timevalue vert automatisk konverterte til det interne formatet. Datovariablane kan konverterast til vanlege tal med funksjonane Dag, Månad, År eller Time, Minutt, Sekund. Det interne datoformatet vert brukt for å kunne rekna ut skilnaden mellom to datoar og/eller klokkeslett. Datovariablane kan berre deklarerast med nøkkelordet Date.

    Dim Variable As Date

## Initiale variabelverdiar

Når ein variabel vert deklarert, vil verdien automatisk verta sett til null. Merk likevel:

Numeriske variablar får automatisk verdien «0» når dei vert deklarerte.

Datovariablar får den interne verdien 0 som svarar til konvertering av "0" med funksjonane Dag, Månad og År eller Time, Minutt og Sekund.

Strengvariablar får verdien av ein tom streng ("") når dei vert deklarerte.

## Array (tabellar)

LibreOffice Basic kan arbeida med ein- og fleirdimensjonale tabellar (array) som vert definerte med ein spesifisert variabeltype. Tabellane er nyttige å bruka for å redigera lister og tabellar i program. Kvart element i ein tabell kan adresserast via ein numerisk indeks.

Array må definerast med uttrykket Dim. Det finst fleire måtar å definera indeksområdet for ein tabell på:

          Dim Text$(20)
| 21 element nummererte frå 0 til 20
          Dim Text$(5,4)
| 30 element (ei matrise med 6 x 5 element)
          Dim Text$(5 To 25)
| 21 element nummererte frå 5 til 25
          Dim Text$(-15 To 5)
| 21 element (inklusiv 0) nummerert frå -15 til 5

Indeksområdet kan innehalda både positive og negative tal.

## Konstantar

Konstantane har ein fast verdi. Dei kan definerast berre ein gong i programmet og verdien kan ikkje endrast seinare.

    Const ConstName=Expression