Как получить длину массива с помощью vba?

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

Помимо этого вы также можете использовать COUNTA, функцию электронных таблиц. В этом уроке мы рассмотрим оба метода, чтобы вы могли использовать любой из них по своему усмотрению.

Шаги, чтобы получить размер массива

Здесь у нас есть таблица, содержащая список месяцев и объем продаж за каждый месяц.

длина массива vba
  1. Убедитесь, что у вас правильно объявлена таблица со строками и столбцами.
  2. После этого еще две переменные (потому что у нас двумерный массив) для хранения границ массива.
  3. Затем вам нужно использовать формулу, в которой вам нужно использовать функцию Ubound, чтобы получить верхний предел, а затем Lbound, чтобы получить нижний предел массива.
  4. Поскольку у вас есть двумерный массив, вам обоим необходимо привязать размеры и установить это значение для переменных.
  5. В конце умножьте длины, полученные от 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)."