Spis treści
Indeks 🔎︎

# Instrukcja ReDim

Deklaruje lub redefiniuje zmienne lub tablice.

### Składnia:

    ReDim [Preserve] variable [(start To end)] [As type-name][, variable2 [(start To end)] [As type-name][,...]]

Opcjonalnie dodaj słowo kluczowe Preserve, aby zachować zawartość tablicy, której wymiary zostały zmienione. ReDim może być używana tylko w podprogramach.

### Parametry:

variable: Dowolna nazwa zmiennej lub tablicy.

typename: Słowo kluczowe, które deklaruje typ danych zmiennej.

Byte: Zmienna bajtowa (0-255)

Boolean: Zmienna logiczna (True, False)

Currency: Zmienna walutowa (waluta z 4 miejscami po przecinku)

Date: Zmienna daty

Double: Zmienna zmiennoprzecinkowa podwójnej precyzji (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer: Zmienna typu liczba całkowita (w zakresie od -32768 do 32767)

Long: Zmienna typu liczba całkowita długa (w zakresie od -2 147 483 648 do 2 147 483 647)

Object: Zmienna obiektowa (Uwaga: ta zmienna może być później zdefiniowana tylko za pomocą Set!)

Single: Zmienna zmiennoprzecinkowa typu pojedyncza precyzja (w zakresie od 3,402823 x 10E38 do 1,401298 x 10E-45).

String: Zmienna w postaci ciągu znaków składająca się z maksymalnie 64 000 znaków ASCII.

Variant: Typ zmiennej typu Variant (zawiera wszystkie typy określone przez definicję). Jeśli nazwa typu nie jest określona, zmienne są automatycznie definiowane jako typ Variant, chyba że użyto instrukcji z DefBool do DefVar.

object: Obiekt UNO (Universal Network Object) lub instancja obiektu ClassModule.

char: Znak specjalny, który deklaruje typ danych zmiennej.

W LibreOffice Basic nie ma potrzeby jawnego deklarowania zmiennych. Zanim jednak będziesz móc z nich korzystać, musisz zadeklarować tablice. Możesz zadeklarować zmienną za pomocą instrukcji Dim, używając przecinków (,) do oddzielenia wielu deklaracji. Aby zadeklarować typ zmiennej, wprowadź znak deklaracji typu po nazwie lub użyj odpowiedniej nazwy słowa kluczowego typu.

Declaration character | Variable type name
--- | ---
% | Integer
& | Long
! | Single
# | Double
$ | String
@ | Currency

array: Deklaracja tablicowa.

start, end: Wartości liczbowe lub stałe określające liczbę elementów (NumberElements=(end-start)+1) i zakres indeksu.

start i end mogą być wyrażeniami numerycznymi, jeśli ReDim zastosowano na poziomie procedury.

LibreOffice Basic obsługuje tablice jedno- lub wielowymiarowe zdefiniowane jako określony typ zmiennych. Tablice stosuje się w programach zawierających listy lub tabele, które należy edytować. Zaletą tablic jest możliwość adresowania pojedynczych elementów za pomocą indeksów, które mogą być wyrażeniami numerycznymi lub zmiennymi.

Tablice są deklarowane za pomocą instrukcji Dim. Istnieje wiele sposobów definiowania zakresu indeksu:

      Dim text(20) As String ' 21 elementów ponumerowanych od 0 do 20
      Dim value(5 to 25) As Integer ' 21 wartości ponumerowanych od 5 do 25
      Dim amount(-15 to 5) As Currency ' 21 kwot (w tym 0), ponumerowanych od -15 do 5
      REM Dwuwymiarowe pole danych
      Dim table$(20,2) ' 63 elementy; pierwszy rząd od 0 do 20, drugi rząd od 0 do 20 i trzeci rząd od 0 do 20.

Typ tablicy można zadeklarować jako dynamiczny, jeśli instrukcja ReDim określa liczbę wymiarów w podprogramie standardowym lub funkcji zawierającej tablicę. Zasadniczo wymiar tablicy można zdefiniować tylko raz i nie można go modyfikować. W podprogramie możesz zadeklarować tablicę za pomocą ReDim. Wymiary można definiować tylko za pomocą wyrażeń numerycznych. Dzięki temu pola są tylko tak duże, jak to konieczne.

## Przykład:

    Sub ExampleRedim
        Dim iVar() As Integer, iCount As Byte
        ReDim iVar(5) As Integer
        For iCount = 1 To 5
            iVar(iCount) = iCount
        Next iCount
        ReDim iVar(10) As Integer
        For iCount = 1 To 10
            iVar(iCount) = iCount
        Next iCount
    End Sub