Vba объявление массива


Решение: Ввод и объявление двумерного массива вручную

Здравствуйте! Прошу помощи. Хочу проверить визуально результат сортировки. Ничего не получается. Ругаю всех преподавателей и ресурсы Интернета. Потратил впустую пять часов.Вопросы: Как ввести и объявить массивом ячейки ниже? Затем проверить: как изменились значения ячеек от быстрой сортировки? Код ниже неработающий! Как исправить?Sub Sort56() Dim i%, j%,  A() As Integer Dim E%, t%, N%, M% Cells.Clear N = 6 M = 5 ReDim A(1 To N, 1 To M) [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(6, 5) = A(i, j) A(6, 5) = Cells(i, j)   E = Cells((i + j) \ 2) Do   While Cells(i) < E: i = i + 1: Wend   While Cells(j) < E: j = j - 1: Wend   If i <= j Then   t = Cells(i): Cells(i) = Cells(j): Cells(j) = t   i = i + 1: j = j - 1   End If Loop While i <= j End Sub

Код к задаче: «Ввод и объявление двумерного массива вручную - 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

studassistent.ru

Объявление массива |  Массивы  | Глава 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

velib.com

Описание массивов 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