Учебники

VBA — Массивы

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

Декларация массива

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

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.

  • Индекс массива не может быть отрицательным.

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

Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.

Индекс массива не может быть отрицательным.

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

Присвоение значений массиву

Значения присваиваются массиву путем указания значения индекса массива для каждого из назначаемых значений. Это может быть строка.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Многомерные массивы

Массивы не просто ограничены одним измерением, однако они могут иметь максимум 60 измерений. Двумерные массивы являются наиболее часто используемыми.

пример

В следующем примере объявляется многомерный массив с 3 строками и 4 столбцами.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

ReDim Заявление

Оператор ReDim используется для объявления переменных динамического массива и выделения или перераспределения пространства хранения.

Синтаксис

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Описание параметра

  • Сохранять — необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.

  • Varname — обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.

  • Subscripts — обязательный параметр, который указывает размер массива.

Сохранять — необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.

Varname — обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.

Subscripts — обязательный параметр, который указывает размер массива.

пример

В следующем примере массив был переопределен, а затем значения сохранены при изменении существующего размера массива.

Примечание. При изменении размера массива, меньшего, чем он был изначально, данные в удаленных элементах будут потеряны.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

XYZ
41.25
22
3
4
5
6
7

Методы массива

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

Функция, которая возвращает целое число, соответствующее наименьшему нижнему индексу из указанных массивов.

Функция, которая возвращает целое число, соответствующее наибольшему нижнему индексу заданных массивов.

Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на основе разделителя.

Функция, которая возвращает строку, которая содержит указанное количество подстрок в массиве. Это прямо противоположная функция метода разделения.

Функция, которая возвращает нулевой массив, который содержит подмножество строкового массива на основе определенных критериев фильтра.

Функция, которая возвращает логическое значение, указывающее, является ли входная переменная массивом.

Функция, которая восстанавливает выделенную память для переменных массива.