Как получить длину массива с помощью vba?
В VBA получение длины массива означает подсчет количества элементов в этом массиве. Для этого вам нужно знать самый нижний элемент и самый высокий элемент. Чтобы получить это, вы можете использовать функции UBOUND и LBOUND , которые возвращают верхний и нижний предел соответственно.
Помимо этого вы также можете использовать COUNTA, функцию электронных таблиц. В этом уроке мы рассмотрим оба метода, чтобы вы могли использовать любой из них по своему усмотрению.
Шаги, чтобы получить размер массива
Здесь у нас есть таблица, содержащая список месяцев и объем продаж за каждый месяц.

- Убедитесь, что у вас правильно объявлена таблица со строками и столбцами.
- После этого еще две переменные (потому что у нас двумерный массив) для хранения границ массива.
- Затем вам нужно использовать формулу, в которой вам нужно использовать функцию Ubound, чтобы получить верхний предел, а затем Lbound, чтобы получить нижний предел массива.
- Поскольку у вас есть двумерный массив, вам обоим необходимо привязать размеры и установить это значение для переменных.
- В конце умножьте длины, полученные от Ubound и Lbound, как верхний и нижний предел.
Вот полный код.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
Примечание. Вам, должно быть, интересно, есть ли в общей сложности 13 строк в таблице, которой я поделился с вами в начале статьи.
Но мы использовали таблицу из 13 строк, потому что первая строка была заголовком. Здесь мы использовали функции IF STATEMENT и ISEMPTY, чтобы проверить, не содержит ли объявленный массив каких-либо элементов.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
Использование COUNTA для получения длины массива
Как вы знаете, массив — это набор элементов, структурированных одномерным или многомерным образом, и вы можете использовать функцию СЧЕТЗ ( функцию электронной таблицы ) для подсчета этих элементов за один раз.
В следующем коде вы использовали тот же массив, который объявили ранее, а затем использовали переменную для хранения количества элементов, возвращаемых функцией.

Как видите, результат — 24 — общее количество элементов в массиве.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
Есть одна вещь, о которой вам нужно позаботиться: этот метод не будет идеальным для использования в каждой ситуации, поэтому всегда полезно использовать метод, который мы обсуждали ранее.
Вы также можете написать код, чтобы сначала проверить, не является ли объявленный массив пустым.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."