Innhold

# Bruk av Variabler

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

## Navgivingskonvensjoner for variabelnavn

Et variabelnavn kan inneholde maksimalt 256 tegn. Det første tegnet i et variabelnavn må være en bokstav i det engelske alfabetet A-Z eller a-z. De andre tegnene kan være en bokstav, et tall eller understrek («_»). Ingen andre tegn er tilatt. LibreOffice Basic skiller ikke mellom store og små bokstavar i variabelnavnene. Et variabelnavn kan også inneholde mellomrom, men må da skrives mellom hakeparenteser.

Eksempel på variabelnavn:

        MyNumber=5 'Riktig'
        MyNumber5=15 'Riktig'
        MyNumber_5=20 'Riktig'
        Mitt nummer=20 'Ikke gyldig, variabel med mellomrom må være omsluttet av hakeparenteser'
        [Mitt nummer]=12 'Riktig'
        DéjàVu=25 'Ikke gyldig, spesialtegn er ikke tillatt'
        5MyNumber=12 'Ikke gyldig, variabel kan ikke begynne med et tall'
        Number,Mine=12 'Ikke gyldig, skilletegn er ikke tillatt'

## Definere Variabler

I LibreOffice Basic trenger du ikke å spesifikt deklarere variabler. En variabeldeklarasjon can utføres medDim uttrykket. Du kan deklarere mer enn en variabel samtidig , gjennom å separere de med kommategn. For å definere variabeltypen, bruk enten en type-dekalrasjon etter navnet, eller et passende nøkkelord.

Eksempler for variabeldeklarasjoner:

        Dim a$ 'Erklærer variabelen "a" som en streng'
        Dim a As String 'Erklærer variabelen "a" som en streng'
        Dim a$, b As Integer 'Erklærer en variabel som en streng og en som et heltall'
        Dim c As Boolean 'Erklærer c som en boolsk variabel som kan være SANN eller USANN'

Når du har deklarert en variabel som en spesifik type, kan du ikke deklarere samme variabelnavn med en annen type

Når du erklærer flere variabler i en enkelt kodelinje, må du spesifisere typen for hver variabel. Hvis typen til en variabel ikke er eksplisitt spesifisert, vil Basic anta at variabelen er av typen Variant.

      ' Begge variablene "a" og "b" er av typen heltall
      Dim a As Integer, b As Integer
      ' Variabel "c" er en variant og "d" er et heltall
      Dim c, d As Integer
      ' En variabel kan også eksplisitt deklareres som en variant
      Dim e As Variant, f As Double

Variant-typen er en spesiell datatype som kan lagre alle slags verdier. For å lære mer, se delen Varianttypen nedenfor.

### Tving Variabeldeklarasjoner

For tvingende deklarasjon av variabler, bruk følgende kommando:

    Option Explicit

Uttrykket Option Explicit må være på den første linjen i modulen, foran den første SUB-prosedyren. Normalt skal bare tabeller («array») deklarerest spesielt. Alle andre variablar blir deklarerte med typedeklarasjonstegnet eller, dersom dette er sløyfet, som standardtypen Single.

## Variabeltyper

LibreOffice Basic har støtte for fire variabelklasser:

- Numeriske variabler inneholder tallverdier. Variablene blir brukt til å lagre store eller små tall, desimaltall eller brøk.

- Streng-variablene inneholder tegnstrenger (tekst).

- Logiske variabler kan ha verdiene SANT (TRUE) eller FALSKT(FALSE).

- Object-variablene kan lagre ulike typer objekter som feks tabeller og dokument i et dokument.

### Heltallsvariabler

Integervariabler varierer fra -32768 til 32767. Hvis du tilordner en flytende punktverdi til en heltallvariabel, avrundes desimaltallene til neste heltall. Heltallvariabler beregnes raskt i prosedyrer og passer for tellervariabler i sløyfer. En heltallvariabel krever bare to bytes minne. "%" er tegndeklarasjonskarakteren.

    Dim Variable%
    Dim Variable As Integer

### Variabeltypen Long

Long integer-variabler varierer fra -2147483648 til 2147483647. Hvis du tilordner en flytende punktverdi til en lang heltallvariabel, avrundes desimaltallene til neste heltall. Long integervariabler beregnes raskt i prosedyrer og er egnet for tellervariabler i sløyfer for store verdier. En lang integervariabel krever fire byte minne. "&" er typedeklarasjonskarakteren.

    Dim Variable&
    Dim Variable As Long

### Desimalvariabler

Decimale variabler kan ta positive eller negative tall eller null. Nøyaktigheten er opptil 29 siffer.

Du kan bruke pluss (+) eller minus (-) tegn som prefiks for desimaltall (med eller uten mellomrom).

Hvis et desimaltall er tilordnet en heltallvariabel, rundes LibreOffice Basic om figuren opp eller ned.

### Bruk av Variabler

Enkeltvariabler kan ha positive eller negative verdier fra 3,402823 x 10E38 til 1,401298 x 10E-45. Enkeltvariabler er flyttallvariabler, der desimalpresisjonen avtar når den ikke-desimale delen av tallet øker. Enkeltvariabler egner seg for matematiske beregninger av gjennomsnittlig presisjon. Beregninger krever mer tid enn for heltallsvariabler, men er raskere enn beregninger med doble variabler. En enkelt variabel krever 4 byte minne. Typedeklarasjonstegnet er "!".

    Dim Variable!
    Dim Variable As Single

### Bruk av Variabler

Doble variabler kan ta positive eller negative verdier fra 1,79769313486232 x 10E308 til 4,94065645841247 x 10E-324. Doble variabler er flyttallsvariabler, der desimalpresisjonen avtar når den ikke-desimale delen av tallet øker. Doble variabler er egnet for nøyaktige beregninger. Beregninger krever mer tid enn for enkeltvariabler. En dobbel variabel krever 8 byte minne. Typedeklarasjonstegnet er "#".

    Dim Variabel#
    Dim Variable As Double

### Valutavariablene

Valutavariabler lagres internt som 64-biters tall (8 byte) og vises som et fast desimalsummer med 15 ikke-desimalt og 4 desimaler. Verdiene varierer fra -922337203685477.5808 til +922337203685477.5807. Valutavariabler brukes til å beregne valutaverdier med høy presisjon. Typeklarasjons karakteren er "@".

    Dim Variable@
    Dim Variable As Currency

### Direkteverdi for heltall

Tall kan kodes som oktal, og som heksadesimaler.

      xi = &o13 '    8 + 3
      ci = &h65 ' 6*16 + 5
      MAX_Integer =  &o77777 '  32767 = &h7FFF
      MIN_Integer = &o100000 ' -32768 = &h8000
      MAX_Long = &h7fffffff '  2147483647 = &o17777777777
      MIN_Long = &h80000000 ' -2147483648 = &o20000000000

### Bruk av Variabler

Strengvariabler kan inneholde tegnstrenger med opptil 2 147 483 648 tegn. Hvert tegn lagres som den tilsvarende Unicode-verdien. Strengvariabler er egnet for tekstbehandling i programmer og for midlertidig lagring av alle tegn som ikke kan skrives ut, opptil en maksimal lengde på 2 Gbyte. Minnet som kreves for å lagre strengvariabler avhenger av antall tegn i variabelen. Typedeklarasjonstegnet er "$".

I BASIC-strengfunksjoner, har første tegn i strengen indeks 1.

    Dim Variable$
    Dim Variable As String

### Bolske variabler (av type Boolean)

Logiske variabler kan inneholde en av to verdier: SANN (TRUE) og USANN (FALSE). Talelt 0 representerer USANN, alle andre verdier gir SANN.

    Dim Variable As Boolean

### Bruk av Variabler

Datovariabler kan kun inneholde verdier for datoer og klokkeslett. Verdiene lagres i et internt format. Verdier som er tilordnet datovariabler med Dateserial, Datevalue, Timeserial eller Timevalue blir automatisk konverterte til det interne formatet. Datovariablene kan konverteres til vanlige tall med funksjonene Dag, Måned, År eller Time, Minutt, Sekund. Det interne datoformatet brukes for å regne ut forskjellen mellom to datoer og/eller klokkeslett. Datovariablene kan kun deklareres med nøkkelordet Date.

    Dim Variable As Date

### Bokstaver for Datoer

Datobokstaver lar deg spesifisere entydige datovariabler som er uavhengige av gjeldende språk. Bokstaver er omsluttet mellom hash-tegn #. Mulige formater er:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

      start_date = #1899-12-30# ' = 0
      dob = #2010-09-28#

## Varianttypen

Variabler deklarert som Variant kan håndtere alle datatyper. Dette betyr at den faktiske datatypen er definert under kjøring ettersom en verdi tildeles variabelen.

Det er tre hovedmåter å lage en Variant-variabel, som vist nedenfor:

      Dim varA ' Typen er ikke spesifisert, derfor er variabelen en variant
      Dim varB som variant ' Variabelen er eksplisitt erklært som en variant
      varC = "abc" ' Tidligere ikke-deklarerte variabler behandles som varianter

Eksemplet nedenfor bruker TypeName-funksjonen for å vise hvordan typen til en Variant-variabel endres ved tildeling.

      Dim myVar As Variant
      MsgBox TypeName(myVar) ' Empty
      myVar = "Hello!"
      MsgBox TypeName(myVar) ' String
      myVar = 10
      MsgBox TypeName(myVar) ' Integer

En Variant-variabel initialiseres med den spesielle datatypen Tom. Du kan bruke IsEmpty-funksjonen for å teste om en variabel er en Tom Variant.

Du kan også bruke søkeordet Any for å erklære en variabel som en Variant. Imidlertid er Alle utdatert og er tilgjengelig for bakoverkompatibilitet.

Argumenter med typen Variant eller Alle som sendes i funksjonskall, blir ikke sjekket for deres typer.

      Dim myVar As Any ' Variabel "myVar" er en variant

## Initiale variabelverdier

Når en variabel blir deklarert, vil verdien automatisk bli satt til null. Merk likevel:

Numeriske variabler får automatisk verdien «0» når de blir deklarerte.

Datovariabler får den interne verdien 0 som tilsvarer konvertering av "0" med funksjonene Dag, Måned og År eller Time, Minutt og Sekund.

Strengvariabler får verdien av en tom streng ("") når de blir deklarerte.

## Array (tabeller)

LibreOffice Basic kan gjenkjenne en- eller flerdimensjonal arrays, definert av en spesifisert variabeltype. Arrays er egnet for redigering av lister og tabeller i programmer. Individuelle elementer i en matrise kan adresseres gjennom en numerisk indeks.

Array må defineres med uttrykket Dim. Det finst flere måter å definere indeksområdet for en tabell på:

        Dim Tekst$(20) '21 elementer nummerert fra 0 til 20'
        Dim Tekst$(5,4) '30 elementer (en matrise på 6 x 5 elementer)'
        Dim tekst$(5 til 25) '21 elementer nummerert fra 5 til 25'
        Dim tekst$(-15 til 5) '21 elementer (inkludert 0), nummerert fra -15 til 5'

Indeksområdet kan inneholde både positive og negative tall.

## Konstanter

Konstantene har en fast verdi. De kan defineres kun en gang i programmet og verdien kan ikke endres senere.

    Const ConstName=Expression

Lignende emner

Basic Konstanter

Dim uttrykk