Объявление массива vba: Объявление массивов (VBA) | Microsoft Learn

Объявление массивов (VBA) | Microsoft Learn





Twitter




LinkedIn




Facebook




Адрес электронной почты










  • Статья

  • Чтение занимает 2 мин

Массивы объявляются так же, как и другие переменные, при помощи операторов Dim, Static, Private или Public Отличие скалярных переменных (которые не являются массивами) от переменных массивов заключается в том, что для массива, как правило, необходимо указывать размер. Массив с указанным размером является массивом фиксированного размера. Массив, размер которого можно изменить во время выполнения программы, является динамическим массивом.

Индексация массива от 0 или 1 зависит от оператора Option Base. Если не указано Option Base 1, все индексы массива будут начинается с нуля.

Объявление статического массива

В приведенном ниже примере кода массив фиксированного размера объявлен массивом целых переменных (Integer) с 11 строками и 11 столбцами:

Dim MyArray(10, 10) As Integer 

Первый аргумент определяет количество строк, второй — столбцов.

Как и в случае объявления любой другой переменной, если для объявленного массива не указать тип данных, его элементам будет присвоен тип данных Variant. Каждый числовой элемент Variant массива использует 16 байтов. Каждый строчный элемент Variant использует 22 байта. Чтобы написать как можно более компактный код, четко объявите для своих массивов тип данных, отличный от Variant.

В приведенном ниже примере кода сравниваются размеры нескольких массивов.

' Integer array uses 22 bytes (11 elements * 2 bytes). 
ReDim MyIntegerArray(10) As Integer 
 
' Double-precision array uses 88 bytes (11 elements * 8 bytes). 
ReDim MyDoubleArray(10) As Double 
 
' Variant array uses at least 176 bytes (11 elements * 16 bytes). 
ReDim MyVariantArray(10) 
 
' Integer array uses 100 * 100 * 2 bytes (20,000 bytes). 
ReDim MyIntegerArray (99, 99) As Integer 
 
' Double-precision array uses 100 * 100 * 8 bytes (80,000 bytes). 
ReDim MyDoubleArray (99, 99) As Double 
 
' Variant array uses at least 160,000 bytes (100 * 100 * 16 bytes). 
ReDim MyVariantArray(99, 99) 

Максимальный размер массивов зависит от операционной системы и доступного объема памяти. Использование массивов, размер которых превышает объем доступной оперативной памяти вашего компьютера, приводит к снижению скорости, поскольку системе необходимо выполнять запись данных и чтение с диска.

Объявление динамического массива

Объявив динамический массив, вы сможете менять его размер во время выполнения кода. Используйте операторы Static, Dim, Private или Public, чтобы объявить массив, не указывая значение в скобках, как показано в следующем примере:

Dim sngArray() As Single 

Примечание

Используйте оператор ReDim, чтобы неявно объявить массив в процедуре. Будьте внимательны и вводите имя массива без ошибок при использовании оператора ReDim. Даже если в модуль включен оператор Option Explicit, будет создан второй массив.

В процедуре внутри области массива используйте оператор ReDim, чтобы изменить количество измерений, задать количество элементов и определить нижнюю и верхнюю границы каждого измерения. Используйте оператор ReDim, чтобы изменить динамический массив при необходимости. Однако значения внутри массива при этом не сохраняются. Используйте ReDim Preserve для расширения массива, сохраняя при этом текущие значения.

Например, приведенный ниже оператор увеличивает массив на 10 элементов, сохраняя при этом текущие значения исходных элементов.

ReDim Preserve varArray(UBound(varArray) + 10) 

Примечание

При использовании ключевого слова Preserve внутри динамического массива можно менять только верхнюю границу последнего измерения; изменить количество измерений нельзя.

См. также

  • Темы по основам Visual Basic

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.






Использование массивов (VBA) | Microsoft Learn


  • Статья

  • Чтение занимает 2 мин

Можно объявить массив для работы с набором значений одного типа данных. Массив представляет собой одиночную переменную с множеством ячеек для хранения значений, тогда как типовая переменная имеет только одну ячейку хранилища, в которой может храниться только одно значение. Следует обращаться к массиву как одному целому, когда необходимо сослаться на все значения, хранящиеся в нем, или можно обращаться к отдельным элементам.

Например, чтобы хранить ежедневные расходы по каждому дню года, можно объявить одну переменную массива с 365 элементами, а не объявлять 365 переменных. Каждый элемент массива содержит одно значение. В следующем заявлении объявляется переменная массива с 365 элементами. По умолчанию массив индексируется, начиная с нуля, так что верхняя граница массива равна 364, а не 365.

Dim curExpense(364) As Currency 

Чтобы установить значение отдельного элемента, указывается индекс этого элемента. В следующем примере каждому элементу массива присваивается начальное значение, равное 20.

Sub FillArray() 
 Dim curExpense(364) As Currency 
 Dim intI As Integer 
 For intI = 0 to 364 
 curExpense(intI) = 20 
 Next 
End Sub

Изменение нижней границы

Используйте заявление Option Base в верхней части модуля, чтобы изменить индекс по умолчанию первого элемента с 0 на 1. В следующем примере в заявлении Option Base изменяется индекс для первого элемента, а в заявлении Dim объявляется переменная массива с 365 элементами.

Option Base 1 
Dim curExpense(365) As Currency 

Можно также в явном виде установить нижнюю границу массива, используя выражение To, как показано в следующем примере.

Dim curExpense(1 To 365) As Currency 
Dim strWeekday(7 To 13) As String 

Хранение значений Variant в массивах

Существует два способа создания массивов значений Variant . Один способ — объявление массива с типом данных Variant, как показано в следующем примере:

Dim varData(3) As Variant 
varData(0) = "Claudia Bendel" 
varData(1) = "4242 Maple Blvd" 
varData(2) = 38 
varData(3) = Format("06-09-1952", "General Date") 

Другой способ — присвоение массива, возвращаемого функцией Array, переменной Variant, как показано в следующем примере.

Dim varData As Variant 
varData = Array("Ron Bendel", "4242 Maple Blvd", 38, _ 
Format("06-09-1952", "General Date")) 

Независимо от способа создания массива элементы в массиве значений Variant идентифицируют по индексу. Например, в любом из предыдущих примеров может быть добавлен следующий оператор.

MsgBox "Data for " & varData(0) & " has been recorded." 

Использование многомерных массивов

В Visual Basic допускается объявлять массивы с 60 размерностями, максимум. Например, следующий оператор объявляет 2-мерный массив 5 на 10.

Dim sngMulti(1 To 5, 1 To 10) As Single 

Если рассматривать массив как матрицу, первый аргумент представляет строки, а второй аргумент представляет столбцы.

Использование вложенных для… Следующие утверждения для обработки многомерных массивов. Следующая процедура позволяет заполнить двумерный массив значениями Single.

Sub FillArrayMulti() 
 Dim intI As Integer, intJ As Integer 
 Dim sngMulti(1 To 5, 1 To 10) As Single 
 
 ' Fill array with values.  
 For intI = 1 To 5 
 For intJ = 1 To 10 
 sngMulti(intI, intJ) = intI * intJ 
 Debug.Print sngMulti(intI, intJ) 
 Next intJ 
 Next intI 
End Sub

См. также

  • Темы по основам Visual Basic

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Объявление массивов (VBA) | Microsoft Узнайте

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Статья
  • 3 минуты на чтение

Массивы объявляются так же, как и другие переменные, с использованием Dim , Static , Private или Общедоступные операторы . Разница между скалярными переменными (теми, которые не являются массивами) и переменными-массивами заключается в том, что вы обычно должны указывать размер массива. Массив, размер которого указан, является массивом фиксированного размера. Массив, размер которого можно изменить во время работы программы, является динамическим массивом.

Индексируется ли массив с 0 или 1, зависит от настройки оператора Option Base . Если Option Base 1 не указан, все индексы массива начинаются с нуля.

Объявление фиксированного массива

В следующей строке кода массив фиксированного размера объявляется как массив Integer с 11 строками и 11 столбцами:

 Dim MyArray(10, 10) As Integer
 

Первый аргумент представляет строки; второй аргумент представляет столбцы.

Как и в случае объявления любой другой переменной, если вы не укажете тип данных для массива, тип данных элементов объявленного массива будет Variant . Каждая цифра Вариант Элемент массива использует 16 байт. Каждый элемент строки Variant использует 22 байта. Чтобы написать как можно более компактный код, явно объявите, что ваши массивы имеют тип данных, отличный от Variant .

Следующие строки кода сравнивают размер нескольких массивов.

 ' Целочисленный массив использует 22 байта (11 элементов * 2 байта).
ReDim MyIntegerArray(10) как целое число
 
' Массив двойной точности использует 88 байт (11 элементов * 8 байт).
ReDim MyDoubleArray(10) как двойной
 
' Вариантный массив занимает не менее 176 байт (11 элементов * 16 байт).
Изменить размер MyVariantArray(10)
 
' Целочисленный массив использует 100 * 100 * 2 байта (20 000 байт).
ReDim MyIntegerArray (99, 99) как целое число
 
' Массив двойной точности использует 100 * 100 * 8 байт (80 000 байт).
ReDim MyDoubleArray (99, 99) как двойной
 
' Массив вариантов использует не менее 160 000 байт (100 * 100 * 16 байт). 
ReDim MyVariantArray(99, 99)
 

Максимальный размер массива зависит от операционной системы и объема доступной памяти. Использование массива, превышающего объем оперативной памяти, доступной в вашей системе, выполняется медленнее, поскольку данные необходимо считывать с диска и записывать на него.

Объявить динамический массив

Объявив динамический массив, вы можете изменить размер массива во время выполнения кода. Используйте оператор Static , Dim , Private или Public для объявления массива, оставив скобки пустыми, как показано в следующем примере.

 Dim sngArray() как одиночный
 

Примечание

Используйте оператор ReDim для неявного объявления массива внутри процедуры. Будьте осторожны, чтобы не ошибиться в имени массива при использовании Заявление ReDim . Даже если в модуль включен оператор Option Explicit , будет создан второй массив.

В процедуре в области действия массива используйте оператор ReDim , чтобы изменить количество измерений, определить количество элементов и определить верхнюю и нижнюю границы для каждого измерения. Используйте оператор ReDim , чтобы изменять динамический массив так часто, как это необходимо. Однако каждый раз, когда вы делаете это, существующие значения в массиве теряются. Используйте ReDim Preserve для расширения массива при сохранении существующих значений в массиве.

Например, следующая инструкция увеличивает массив на 10 элементов без потери текущих значений исходных элементов.

 ReDim Preserve varArray(UBound(varArray) + 10)
 

Примечание

При использовании ключевого слова Сохранить с динамическим массивом можно изменить только верхнюю границу последнего измерения, но нельзя изменить количество измерений.

См. также

  • Основные темы Visual Basic

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

Использование массивов (VBA) | Microsoft Узнайте

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Статья
  • 2 минуты на чтение

Вы можете объявить массив для работы с набором значений одного типа данных. Массив — это отдельная переменная с множеством ячеек для хранения значений, в то время как типичная переменная имеет только одну ячейку для хранения, в которой она может хранить только одно значение. Обращайтесь к массиву в целом, если вы хотите обратиться ко всем содержащимся в нем значениям, или вы можете обратиться к его отдельным элементам.

Например, для хранения ежедневных расходов на каждый день года можно объявить одну переменную-массив с 365 элементами вместо объявления 365 переменных. Каждый элемент массива содержит одно значение. Следующий оператор объявляет переменную массива с 365 элементами. По умолчанию массив индексируется, начиная с нуля, поэтому верхняя граница массива равна 364, а не 365.

 Dim curExpense(364) As Currency
 

Чтобы установить значение отдельного элемента, укажите индекс элемента. В следующем примере каждому элементу массива присваивается начальное значение 20.

 Sub FillArray ()
 Dim curExpense(364) в качестве валюты
 Dim intI как целое число
 Для intI = от 0 до 364
 curExpense(intI) = 20
 Следующий
Конец сабвуфера
 

Изменение нижней границы

Используйте оператор Option Base в верхней части модуля, чтобы изменить индекс по умолчанию первого элемента с 0 на 1. В следующем примере оператор Option Base изменяет индекс для первый элемент, а оператор Dim объявляет переменную массива с 365 элементами.

 Опция База 1
Dim curExpense(365) в качестве валюты
 

Можно также явно задать нижнюю границу массива с помощью предложения To , как показано в следующем примере.

 Dim curExpense(от 1 до 365) в качестве валюты
Dim strWeekday (от 7 до 13) как строка
 

Сохранение значений Variant в массивах

Существует два способа создания массивов значений Variant . Один из способов — объявить массив данных типа Variant, как показано в следующем примере:

 Dim varData(3) как вариант
varData(0) = "Клаудия Бендель"
varData(1) = "Кленовый бульвар, 4242"
varData(2) = 38
varData(3) = Формат("09-06-1952", "Общая дата")
 

Другой способ — присвоить массив, возвращаемый функцией Array , переменной Variant , как показано в следующем примере.

 Dim varData как вариант
varData = Array("Рон Бендель", "Кленовый бульвар, 4242", 38, _
Формат("09-06-1952", "Общая дата"))
 

Вы идентифицируете элементы в массиве из Вариант значений по индексу, независимо от того, какой метод вы используете для создания массива.