Vba объявление массива
Решение: Ввод и объявление двумерного массива вручную
Код к задаче: «Ввод и объявление двумерного массива вручную - VBA»
textual Sub MySort() Dim i%, j%, a() '-------------------- ActiveSheet.UsedRange.EntireRow.Delete Cells.Clear [A1] = -9: [B1] = -8: [C1] = -4: [D1] = -8: [e1] = -10 [A2] = 0: [B2] = 3: [C2] = 0: [D2] = 6: [E2] = -9 [A3] = -7: [B3] = 3: [C3] = -1: [D3] = -3: [E3] = -8 [A4] = 4: [B4] = 8: [C4] = 0: [D4] = -9: [E4] = 5 [A5] = -2: [B5] = -1: [C5] = -1: [D5] = -6: [E5] = -4 [A6] = -9: [B6] = 1: [C6] = -7: [D6] = 8: [E6] = -9 a = Sheets(1).[A1].CurrentRegion.Value uSort a, 2 Sheets(1).[g1].Resize(UBound(a, 1), UBound(a, 2)) = a Sheets(1).[a8].Resize(UBound(a, 1), UBound(a, 2)) = a End Sub Private Sub uSort(ByRef x(), N&) Dim v, u&, d&, f%, st& If IsArray(x) Then f = LBound(x): d = f For u = f + 1 To UBound(x) If x(u, N) < x(d, N) Then For st = 1 To UBound(x, 2) v = x(d, st): x(d, st) = x(u, st): x(u, st) = v Next u = d - 1: d = u - 1: If u < f Then d = u: u = f End If d = d + 1 Next End If End SubОбъявление массива | Массивы | Глава 1 Краткое руководство по VBA | Читать онлайн, без регистрации
Объявление массива
Для объявления массивов в VBA используются инструкции, формат которых приведен ниже:
Public | Private Имя_массива ([Размерность])[As Имя_типа] _[, Имя_массива ([Размерность]) [As Имя_типа]]…или
Dim | Static Имя_массива ([Размерность])[As Имя_типа] _[, Имя_массива ([Размерность]) [As Имя_типа]]…Первая инструкция используется для объявления массивов на уровне модуля, вторая – для объявления массива в процедуре или функции (все аналогично объявлению переменных).
Объявление массива отличается от объявления любой другой переменной тем, что при объявлении массива после идентификатора переменной указывается размерность. Если размерность не указана, то создается динамический массив, размер которого можно изменять во время выполнения программы. Для динамического массива инструкция объявления является формальной: чтобы этот массив можно было использовать, к нему необходимо применить инструкцию ReDim (об этой инструкции будет рассказано далее).
При указании размерности массива необходимо учитывать, что элемент Размерность имеет следующий формат:
Нижняя_граница To Верхняя_граница | Количество_элементов _[,Нижняя_граница To Верхняя_граница | Количество_элементов]…В VBA разрешено создавать многомерные массивы с количеством измерений не более 60. Размерности измерений массива разделяются запятой.
При задании размерности в виде Нижняягранща То Верхняягранща нужно явно указывать нижнюю и верхнюю границы измерения массива (например, 50 То 100).
При задании размерности можно также просто указывать требуемое количество элементов в данном измерении массива. При таком задании в качестве нижней границы измерения используется значение по умолчанию (об изменении этого значения будет рассказано далее).
Ниже приведены примеры объявлений массивов (переменного размера, двух одномерных и двух многомерных):
Dim avarValues()Dim astrValues(1 To 10) As String, astrValues2(10) As StringDim aintValues(1 To 10, 1 To 3) As Integer, aintValues(10, 3)As IntegerОписание массивов VBA - Мои статьи - Каталог статей
Как и в других языках программирования, в VBA можно использовать массивы. Массив, как и любую переменную, надо объявлять, используя операторы Dim, Static, Private и Public, которые также задают область видимости переменной. В массиве допускается описание до 60 размерностей. При определении размерности надо указывать верхнюю, а также нижнюю границу. Если нижний индекс не задан явно, нижняя граница массива определяется директивой Option Base. Если отсутствует директива Option Base, нижняя граница массива равняется нулю. Например, в следующем операторе объявляется одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива – А (0), а последний – А (11). В этом случае говоря, что 0 – базовый индекс.
Dim А (11) As Integer
Данный же оператор объявляет двухмерный массив 3´3 (матрицу), состоящий из действительных чисел.
Dim B (2, 2) As Single
Можно изменить базовый индекс, написав в области объявлений модуля директиву Option Base 1. После этого индексы массивов А и В будут начинаться с единицы. Например, в следующем операторе объявляется вектор, состоящий из 11 элементов.
Option Base 1
Dim A (11) As Integer
Другим способом изменения базового индекса является использование ключевого слова То при объявлении массива.
Dim B (1 To 3, 1 To 3) As Single
Dim A (1 To 12) As Integer
Инициализацию элементов массива можно производить по-разному:
Dim B (1, 1) As Single
B (0, 0) = 2 : B (0, 1) = 4
B (1, 0) = 1 : B (1, 1) = 6
Dim M (1 To 9, 1 To 9) As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 9
For j = 1 To 9
M (i, j) = i * j
Next
Next
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность, например:
Dim R () As Single
Затем в программе следует вычислить необходимый размер массива в некоторой переменной, например n, и изменить размер динамического массива с помощью оператора ReDim. В следующем примере сначала объявляется динамический массив, а затем устанавливаются границы его индекса.
Dim R () As Double
ReDim R (1 To 10)
evosoft.ucoz.ru