Använda variabler

From LibreOffice Help
Jump to: navigation, search

I detta avsnitt finns grundläggande information om variabler i LibreOffice Basic.

Namnkonventioner för variabler

Ett variabelnamn får vara högst 255 tecken långt. Det första tecknet i ett variabelnamn måste vara en bokstav mellan A och Z eller a och z. Du kan använda siffror i ett variabelnamn, men inte skiljetecken eller specialtecken (med undantag för understryckningstecken ("_"). Du kan inte använda å, ä eller ö i ett variabelnamn. I LibreOffice Basic är variabelnamn inte skiftlägeskänsliga. Variabelnamn kan innehålla mellanslag, men måste i så fall omges av hakparenteser.

Exempel på variabelnamn:

MittTal=5 Korrigera
MittTal5=15 Korrigera
MittTal_5=20 Korrigera
Mitt tal=20 Ogiltigt, variabler med mellanslag måste skrivas inom hakparenteser
[Mitt tal]=12 Korrekt, variabel med mellanslag inom hakparenteser
Idé=25 Felaktigt, specialtecken är inte giltiga
5MittTal=12 Felaktigt, variabelnamn måste börja med en bokstav
Start-siffra=12 Felaktigt, skiljetecken är inte giltiga

Deklarera variabler

I LibreOffice Basic behöver du inte deklarera variabler explicit. En variabeldeklaration görs med uttrycket Dim. Du kan deklarera fler än en variabel åt gången genom att avgränsa namnen med ett kommatecken. Om du vill definiera variabelns typ använder du ett typdeklarationstecken efter namnet, eller motsvarande nyckelord.

Exempel på variabeldeklarationer:

DIM a$ Deklarerar variabeln "a" som en sträng
DIM a As String Deklarerar variabeln "a" som en sträng
DIM a$, b As Integer Deklarerar en variabel som en sträng och en annan som ett heltal
DIM c As Boolean Deklarerar c som en boolesk variabel som kan vara SANT eller FALSKT

Om du använder typdeklarationstecken när du deklarerar variabler måste du använda tecknet varje gång du använder variabeln. Det innebär att följande uttryck är ogiltiga:

DIM a$ Deklarerar "a" som en sträng
a="teststräng" Typdeklaration saknas: "a$="
Warning.png När du har deklarerat en variabels typ kan du inte deklarera en variabel igen med samma namn fast av en annan datatyp.

Kräva variabeldeklationer

Du kan använda följande instruktion för att kräva explicita variabeldeklarationer:

OPTION EXPLICIT

Instruktionen Option Explicit måste stå på den första raden i modulen, innan den första SUB-proceduren. Om instruktionen saknas måste endast matrisvariabler deklareras explicit. Vid implicit variabeldeklaration deklareras alla andra variabler med ett typdeklationstecken, eller (om typdeklationstecken saknas) som standardtypen Single.

Variabeltyper

LibreOffice Basic har stöd för fyra variabelklasser:

  • Numeriska variabler kan innehålla numeriska värden. Vissa variabler används för att lagra stora eller små heltal, och andra för flyttal eller bråk.
  • Strängvariabler innehåller textsträngar.
  • Logiska variabler av typen Boolean kan ha värdet TRUE eller FALSE.
  • Objektvariabler av typen Object kan innehålla olika typer av objekt, till exempel tabeller och dokument.

Variabeltypen Integer

En heltalsvariabel kan ha ett värde mellan -32768 och 32767. Om du tilldelar en heltalsvariabel av typen Long ett flyttalsvärde, rundas talet av till närmaste heltalsvärde. Beräkningar med heltalsvariabler av typen Long är mycket snabba, och heltalsvariabler används ofta som räknare i repetitiva satser. En heltalsvariabel tar upp två byte minne. Typdeklarationstecknet för en heltalsvariabel är "%".

Dim Variabelnamn%

Dim Variabelnamn As Integer

Variabeltypen Long

En variabel av den här typen kan ha ett värde från -2147483648 till 2147483647. Om du tilldelar en heltalsvariabel ett flyttalsvärde, rundas talet av till närmaste heltalsvärde. Beräkningar med heltalsvariabler är mycket snabba, och heltalsvariabler används ofta som räknare i repetitiva satser. En variabel av typen Long tar upp fyra byte minne. Typdeklarationstecknet är "&".

Dim Variabelnamn&

Dim Variabelnamn as Long

Decimaltalsvariabler

Decimaltalsvariabler kan ta positiva eller negativa tal eller noll. Precisionen är upp till 29 siffror.

Du kan använda plustecken (+) eller minustecken (-) som prefix före decimaltal (med eller utan blanksteg).

Om ett decimaltal tilldelas till en heltalsvariabel, avrundar LibreOffice Basic siffran uppåt eller nedåt.

Variabeltypen Single

Flyttalsvariabler av typen Single kan lagra positiva eller negativa värden mellan 3,402823 x 10E38 och 1,401298 x 10E-45. Antalet decimaler i en flyttalsvariabel minskar när variabelns heltalsdel ökar. Variabler av typen Single används ofta för matematiska beräkningar med genomsnittlig precision. Beräkningar med Single-variabler är långsammare än heltalsberäkningar, men är snabbare än beräkningar med variabler av typen Double. En variabel av typen Single tar upp 4 byte minne. Typdeklarationstecknet är "!".

Dim Variabelnamn!

Dim Variabelnamn as Single

Variabeltypen Double

Flyttalsvariabler av typen Double kan lagra positiva eller negativa värden mellan 1,79769313486232 x 10E38 och 4,94065645841247 x 10E-324. Antalet decimaler i en flyttalsvariabel minskar när variabelns heltalsdel ökar. Double-variabler används för beräkningar med höga krav på precision. Beräkningar med Double-variabler tar mer tid än beräkningar med variabler av typen Single. En variabel av typen Double tar upp 8 byte minne. Typdeklarationstecknet är "#".

Dim Variabelnamn#

Dim Variabelnamn As Double

Variabeltypen Currency

Valutavariabler lagras internt som 64-bitarsvärden (8 byte) och visas som ett fast decimaltal med 15 heltalsplatser och 4 decimaler. Värdeintervallet är -922337203685477,5808 till +922337203685477,5807. Valutavariabler används för att beräkna finansiella värden med hög precision. Typdeklarationstecknet är "@".

Dim Variabelnamn@

Dim Variabelnamn As Currency

Variabeltypen String

En strängvariabel kan lagra teckensekvenser med upp till 65 535 tecken. Varje tecken lagras som motsvarande Unicode-värde. Strängvariabler används för textbehandling och för allmän temporär lagring av data om datamängden är 64 kB eller mindre. Hur mycket minne som krävs för en strängvariabel beror på antalet tecken i strängen. Typdeklarationstecknet är "$".

Dim Variabelnamn$

Dim Variabelnamn As String

Variabeltypen Boolean

Logiska variabler av typen Boolean kan bara lagra ett av två värden: TRUE eller FALSE. Talet 0 returnerar FALSE, medan alla andra värden returnerar TRUE.

Dim Variabelnamn As Boolean

Variabeltypen Date

Datumvariabler kan endast innehålla tids- och datumvärden som lagras i ett internt numeriskt format. Värden som tilldelas en variabel av typen Date med funktionerna Dateserial, Datevalue, Timeserial eller Timevalue konverteras automatiskt till det interna formatet. Datumvariabler konverteras till vanliga tal med någon av funktionerna Day, Month eller Year, respektive Hour, Minute eller Second. Det interna formatet används för att två tids- eller datumvärden ska kunna jämföras. En datumvariabel kan endast deklareras med nyckelordet Date.

Dim Variabelnamn As Date

Initiala variabelvärden

När en variabel har deklarerats antar den automatiskt värdet "Null". Observera följande konventioner:

Numeriska variabler får automatiskt värdet "0" när de har deklarerats.

Datumvariabler får det interna värdet 0, vilket motsvarar konvertering av "0" med funktionerna Day, Month och Year respektive Hour, Minute och Second.

Strängvariabler får värdet av en tom sträng ("") när de deklareras.

Matriser

LibreOffice Basic stöder en- eller flerdimensionella matriser som definieras av en angiven variabeltyp. Matriser används till exempel för att redigera listor och tabeller i program. Enskilda matriselement kan anropas med hjälp av ett numeriskt index.

Matriser måste deklareras med uttrycket Dim. Det finns flera olika sätt att definiera en matris dimensioner:

DIM text$(20) 21 element numrerade från 0 till 20
DIM text$(5.4) 30 element (en matris med 6 x 5 element)
DIM text$(5 to 25) 21 element numrerade från 5 till 25
DIM text$(-15 to 5) 21 element (inklusive 0), numrerade från -15 till 5

Elementen i en matris kan ha positiva eller negativa index.

Konstanter

Konstanter har ett fast värde. De kan endast definieras på ett ställe i programmet och kan inte omdefinieras senare:

CONST ConstName=Expression