Module
Contents
Index 🔎︎

# Dim Statement

Объявляет переменную или массив.

Если переменные разделены запятыми (например, DIM sPar1, sPar2, sPar3 AS STRING), могут быть определены только переменные типа Variant. Для каждой переменной следует использовать отдельную строку определения.

    Dim sPar1 As String

    Dim sPar2 As String

    Dim sPar3 As String

Dim объявляет локальные переменные в процедурах. Глобальные переменные объявляются инструкциями PUBLIC или PRIVATE.

## Синтаксис

    [ReDim]Dim Имя_переменной [(Начало To Конец)] [As Тип_переменной][, Имя_переменной2 [(Начало To Конец)] [As Тип_переменной][,...]]

## Параметры:

Имя_переменной. Любое имя переменной или массива.

Начало, Конец. Числовые значения или константы, определяющие число элементов (Число_элементов=(Конец-Начало)+1) и диапазон индексов.

Параметры Начало и Конец могут быть числовыми выражениями, если ReDim применяется на уровне процедуры.

Тип_переменной. Ключевое слово, описывающее тип данных переменной.

Ключевое слово. Тип переменной.

Bool. Логическая переменная (True, False).

Currency. Переменная типа Currency (денежная единица с 4 десятичными разрядами)

Date. Переменная даты

Double. Переменная с плавающей запятой с двойной степенью точности (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer. Целая переменная (-32768 - 32767)

Long. Целая переменная типа Long (-2 147 483 648 - 2 147 483 647)

Object. Переменная типа Object (Примечание. Эту переменную можно определить только позднее с помощью Set!)

Single. Переменная с плавающей точкой с обычной точностью (3,402823 x 10E38 - 1,401298 x 10E-45).

String. Строковая переменная, состоящая не более чем из 64 000 символов ASCII.

[Variant]. Переменная типа Variant (содержит все типы, указанные определением). Если ключевое слово не определено, переменным автоматически присваивается тип Variant, если не используется какая-либо из инструкций от DefBool до DefVar.

В LibreOffice Basic не требуется, чтобы объявление переменных было явным. Однако перед использованием массива его необходимо объявить. Для объявления переменных можно воспользоваться инструкцией Dim, разделяя отдельные объявления переменных запятыми. Чтобы объявить тип переменной, введите символ описания типа после имени или используйте соответствующее ключевое слово.

В LibreOffice Basic поддерживаются одно- и многомерные массивы, определяемые с помощью заданного типа переменной. Массивы применяются, если программа содержит списки или таблицы, которые нужно изменять. Преимущество массивов заключается в том, что можно рассматривать отдельные элементы в соответствии с индексами, которые могут быть сформулированы как числовые выражения или переменные.

Массивы объявляются с помощью инструкции Dim. Для определения диапазона индексов существует два метода.

DIM text(20) as String REM 21 элемент, пронумерованные от 0 до 20

DIM text(5 to 25) as String REM 21 элемент, пронумерованные от 5 до 25

DIM text(-15 to 5) as String REM 21 элемент (включая 0),

REM пронумерованные от -15 до 5

Двумерное поле данных

DIM text(20,2) as String REM 63 элемента; от 0 до 20 уровень 1, от 0 до 20 уровень 2 и от 0 до 20 уровень 3.

Типы массивов можно определить как динамические, если инструкция ReDim определяет число размерностей в процедуре или функции, содержащей массив. Как правило, размерность массива можно определить только один раз без возможности её изменения. В пределах процедуры массив может быть описан с помощью инструкции ReDim. Допускается определение размерностей только с использованием числовых выражений. Это гарантирует, что величина полей не будет больше необходимой.

## Пример:

    Sub ExampleDim1

    Dim sVar As String

    Dim iVar As Integer

        sVar = "Office"

    End Sub

    Sub ExampleDim2

    Двумерное поле данных

    Dim stext(20,2) As String

    Const sDim as String = " Размерность:"

    For i = 0 To 20

        For ii = 0 To 2

            stext(i,ii) = str(i) & sDim & str(ii)

        Next ii

    Next i

    For i = 0 To 20

        For ii = 0 To 2

            MsgBox stext(i,ii)

        Next ii

    Next i

    End Sub