Массив строк vba: VBA Excel. Массивы (одномерные, многомерные, динамические)

Строковый массив VBA — voxt.ru

Строковый массив Excel VBA

В VBA массив строк — это не что иное, как переменная массива, которая может содержать более одного строкового значения с одной переменной.

Например, посмотрите на ниже код VBAКод VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи.читать далее.

Код:

Sub String_Array_Example()
Dim CityList(1 To 5) As Variant
CityList(1) = "Bangalore"
CityList(2) = "Mumbai"
CityList(3) = "Kolkata"
CityList(4) = "Hyderabad"
CityList(5) = "Orissa"
MsgBox CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4) & ", " & CityList(5)
End Sub

В приведенном выше коде я объявил переменную массива и присвоил длину массива от 1 до 5.

Dim CityList(1 To 5) As Variant

Для этой переменной массива я присвоил 5 названий городов, указав количество каждого массива в скобках.

CityList(1) = "Bangalore"
CityList(2) = "Mumbai"
CityList(3) = "Kolkata"
CityList(4) = "Hyderabad"
CityList(5) = "Orissa"

Затем я написал код для отображения этих названий городов в окне сообщения.

MsgBox CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4) & ", " & CityList(5)

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

Мы все знаем, что это сэкономило так много времени в нашем расписании, избавив от задачи объявления индивидуальных переменных для каждого города. Однако вам нужно усвоить еще одну вещь: мы все еще можем сократить код строки, которую мы пишем для строковых значений. Давайте посмотрим, как мы пишем код для строки VBAКод для строки VBAСтроковые функции в VBA не заменяют строку; вместо этого эта функция создает новую строку. В VBA имеется множество строковых функций, и все они классифицируются как строковые или текстовые функции. читать далее массивы.

Примеры строкового массива в Excel VBA

Ниже приведены примеры массива строк Excel VBA.

Вы можете скачать этот шаблон Excel для строкового массива VBA здесь — Шаблон Excel со строковым массивом VBA

Пример №1

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

Теперь нам нужно не выбирать длину массива заранее.

Код:

Sub String_Array_Example1()
Dim CityList() As Variant
End Sub

Как вы можете видеть выше в скобках, я не указал длины. Теперь для этой переменной давайте вставим значения используя функцию VBA МАССИВИспользование функции VBA МАССИВМассивы используются в VBA для определения групп объектов. В VBA есть девять различных функций работы с массивами: ARRAY, ERASE, FILTER, ISARRAY, JOIN, LBOUND, REDIM, SPLIT и UBOUND.читать далее.

Внутри массива передайте значения в двойных кавычках, разделенных запятой (,).

Код:

Sub String_Array_Example()
Dim CityList() As Variant
CityList = Array("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa")
End Sub

Теперь сохраните старый код, чтобы показать результат названий городов в окно сообщения в VBAОкно сообщения в VBAФункция VBA MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную.читать далее.

Код:

Sub String_Array_Example1()
Dim CityList() As Variant
CityList = Array("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa")
MsgBox CityList(0) & ", " & CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4)
End Sub

Одно изменение, которое я сделал в приведенном выше коде, заключается в том, что мы не определили нижний предел и верхний предел переменной массива, и мы использовали функцию ARRAY, счетчик массива будет начинаться с 0, а не с 1.

Итак, именно по этой причине мы упомянули значения как Ситилист(0), Ситилист(1), Ситилист(2), Ситилист(3) и Ситилист(4).

Теперь запустите код через Эксель сочетание клавишГорячая клавиша ExcelЯрлык Excel — это способ более быстрого выполнения ручного задания.читать далее F5 или вручную. Мы получаем тот же результат, что и в предыдущем коде.

Пример #2

Массив строк VBA с функциями LBOUND и UBOUND

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

Теперь, чтобы включить цикл FOR NEXT, мы не уверены, сколько раз нам нужно запустить код. В этом случае мы можем решить это 5 раз, но это неправильный подход к проблеме. Так как насчет идеи автоматического идентификатора длины массива нижнего и верхнего уровня???

Когда мы открываем цикл FOR NEXT, мы обычно определяем длину цикла от 1 до 5 или от 1 до 10 в зависимости от ситуации. Вместо того, чтобы вводить числа вручную, давайте воспользуемся функциями LBOUND и UBOUND, чтобы автоматически выбрать нижнее и верхнее значения.

Для LBound и Ubound я указал имя массива, т. е. CityList. VBA LBoundVBA LBoundLBound в VBA или «Нижняя граница» извлекает наименьшее число массива. Например, если массив говорит «Dim ArrayCount (от 2 до 10) как String», то с помощью функции LBound мы можем найти наименьшее число длины массива, т.е. 2.читать далее идентифицирует меньшее значение переменной массива и Функция VBA UBoundФункция VBA UBoundUBOUND, также известная как Верхняя граница, — это функция VBA, которая используется в сочетании с противоположной функцией, LBOUND, также известной как Нижняя граница. Эта функция используется для определения длины массива в коде, и, как следует из названия, UBOUND используется для определения верхнего предела массива.читать далее определяет верхнее значение переменной массива.

Теперь покажите значение в окне сообщения, вместо того, чтобы вставлять серийный номер, пусть переменная цикла «k» автоматически принимает значение массива.

Код:

Sub String_Array_Example1()
Dim CityList() As Variant
Dim k As Integer
CityList = Array("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa")
For k = LBound(CityList) To UBound(CityList)
MsgBox CityList(k)
Next k
End Sub

Теперь в окне сообщения будет отображаться название каждого города отдельно.

Пример №3

Строковый массив VBA с функцией разделения

Теперь предположим, что у вас есть названия городов, как показано ниже.

Бангалор, Мумбаи, Калькутта, Гидрабад, Орисса

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

За Выражение, предоставить список городов.

Код:

Sub String_Array_Example2()
Dim CityList() As String
Dim k As Integer
CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa",
For k = LBound(CityList) To UBound(CityList)
MsgBox CityList(k)
Next k
End Sub

Следующий аргумент — «Разделитель», т. е. какой символ отделяет один город от других городов. В данном случае «Двоеточие».

Код:

Sub String_Array_Example2()
Dim CityList() As String
Dim k As Integer
CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa", ";")
For k = LBound(CityList) To UBound(CityList)
MsgBox CityList(k)
Next k
End Sub

Теперь значения разделения функции SPLIT также определяют максимальную длину массива.

То, что нужно запомнить

  • LBOUND и UBOUND — это функции для определения длины массива.
  • Функция ARRAY может содержать много значений объявленной переменной.
  • Один раз, если вы хотите использовать функцию МАССИВ, не определяйте длину массива.

УЗНАТЬ БОЛЬШЕ >>



Post Views:
632

Похожие записи

Примеры использования массивов в VBA

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

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

Пример 1. Создание (объявление) одномерного массива выполняется, так:


Dim Arr1(10) As Integer
Dim Arr2(5 To 10) As String
Dim Arr3() As Long

В данном примере объявляются: одномерный массив Arr1, содержащий ячейки с 0-й до 10-й типа Integer, массив Arr2, содержащий ячейки с 5-й до 10-й типа String и динамический массив Arr3.

Прежде чем использовать динамический массив, его необходимо «инициализировать», т.е. выделить для него необходимую память. Менять размер динамического массива можно много раз в программе, даже в цикле, если хотите. Правда учитывайте, что выделение памяти для массива — ресурсно-затратная операция, поэтому не стоит менять размер массива очень часто, это сильно замедлит программу.

Пример 2. Инициализация динамического массива и изменение его размеров


Dim Arr3() As Long
ReDim Preserve Arr3(10)
ReDim Preserve Arr3(20)

В данном примере мы сначала с помощью ReDim задали размер динамического массива в 11 элементов (c 0-го по 10-й), а затем снова увеличили размер до 21-го элемента. Кроме того, использовали ключевое слово Preserve — означающее, что нужно сохранить уже имеющиеся элементы с их значениями (без этого ключевого слова массив обнуляется).

Примечание: изменение размеров функцией ReDim возможно только для динамических массивов. Если размер массива был изначально задан, то его размер уже не будет меняться функцией.

Пример 3. Объявление многомерного массива


Dim Arr4(10, 10) As Integer
Dim Arr5(5 To 10, 15 To 20, 30) As String

Arr4 — двумерных массив 11х11 элементов, а массив Arr5 — трехмерный.

Пример 4. Создание массива массивов

В следующем примере массив Arr2 будет содержать элементы другого массива Arr1


Dim Arr1 As Variant
Dim Arr2(10) As Variant
Arr1 = Array(10, 20, 30)
Arr2(0) = Arr1
For i = LBound(Arr2(0)) To UBound(Arr2(0))
  MsgBox Arr2(0)(i) ' Выведет последовательно 10, 20 и 30
Next i

Определение нижней и верхней границы массива

Чтобы узнать какой самый наименьший индекс у массива и какой самый максимальный индекс массива, нужно использовать функции LBound для определения нижней границы и UBound для определения верхней границы.

Пример 5. Определение границ массива


Dim Arr1(2 To 15) As Integer
MsgBox LBound(Arr1) ' Выведет: 2
MsgBox UBound(Arr1) ' Выведет: 15
Dim Arr2() As Integer
ReDim Arr2(8)
MsgBox LBound(Arr2) ' Выведет: 0
MsgBox UBound(Arr2) ' Выведет: 8

Чтобы определить границы многомерных массивов, нужно просто использовать второй параметр функций UBound и LBound.


Dim Arr(1 To 10, 5 To 20) As Integer
MsgBox LBound(Arr, 2) ' Выведет: 5
MsgBox UBound(Arr, 2) ' Выведет: 20

Задание нижней границы по-умолчанию

Иногда бывает очень не удобно, что VBA начинает нумерацию элементов массивов с нуля (0), это часто может привести к путанице и усложнению кода программы. Для решения этой проблемы есть специальный оператор Option Base, аргумент которого может быть 0 или 1. Указав значение 1, индексация массивов будет начинаться с 1, а не с 0.

Пример 6. Указание нижней границы по-умолчанию.


Option Base 1

Sub Test()
Dim Arr1(10) As Integer
MsgBox LBound(Arr1)
End Sub

В данном примере я намеренно использовал процедуру, чтобы показать, что Option Base нужно применять не внутри процедур и функций, а в разделе «Declarations». В результате выполнения процедуры Test будет отображено сообщение с индексом нижней границы массива, т. е. «1».

Примечание: Оператор Option Base так же влияет на функцию Array и не влияет на функцию Split (будут рассмотрены ниже), что означает, что при задании «Option Base 1», функция Array вернет массив с индексацией с 1-цы, а функция Split вернет массив с индексацией с 0.

Запись данных в массивы

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

Пример 7. Запись данных в массив в цикле.


Dim Arr(10) As Integer
For i = 0 To 10
    Arr(i) = i * 2
Next i

Пример 8. Запись заранее известных данных с помощью Array


Dim Arr()
Arr = Array("красный", "зеленый", "синий")
MsgBox Arr(2)

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

Пример 9. Получение массива из строки с разделителями


Dim Arr() As String
Arr = Split("красный;зеленый;синий", ";")
MsgBox Arr(2)

Обход элементов массива

Обычно, массивы используются для хранения большого кол-ва данных, а не 1-2 значений, поэтому чтобы получить все эелементы и использовать их для чего-то, обычно используют циклы. Наиболее удобны в этом плане циклы For и For Each.

Пример 10. Обход элементов массива циклом For.


Dim Sum As Integer
Dim Arr()
Arr = Array(10, 20, 30)
For i = 0 To 2
    Sum = Sum + Arr(i)
Next i
MsgBox Sum

Пример 11. Обход элементов массива циклом For Each.


Dim Sum As Integer
Dim Val As Variant
Dim Arr()
Arr = Array(10, 20, 30)
For Each Val In Arr
    Sum = Sum + Val
Next
MsgBox Sum

Иногда, бывает необходимость работы с массивом внутри других типов циклов, но получение значение элемента, всё-равно в них будет таким же, как и в цикле For, т. е. через индекс элемента.

Строковый массив VBA | Как объявить и инициализировать массив строк в Excel VBA?

В VBA массив строк — это не что иное, как переменная массива, которая может содержать более одного строкового значения с одной переменной.

Например, взгляните на код VBA Код VBA Код VBA — это набор инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. Подробнее см. ниже.

Содержание
  • Excel VBA String Array
    • Примеры струнного массива в Excel VBA
      • Пример № 1
      • Пример № 2
      • Пример № 3
    • Вещи.
       Подстрока_Array_Example()
      Dim CityList (от 1 до 5) как вариант
      Список городов (1) = "Бангалор"
      Ситилист(2) = "Мумбаи"
      Список городов (3) = "Калькутта"
      Список городов (4) = "Хайдарабад"
      Список городов (5) = "Орисса"
      MsgBox CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4) & ", " & CityList(5)
      Конец суб 

      В приведенном выше коде мы объявили переменную массива и присвоили массиву длину от 1 до 5.

       Dim CityList(1 to 5) As Variant 

      Затем мы написали код для отображения названий этих городов в окне сообщения.

       Список городов (1) = "Бангалор"
      Ситилист(2) = "Мумбаи"
      Список городов (3) = "Калькутта"
      Список городов (4) = "Хайдарабад"
      CityList(5) = "Orissa" 

      Затем мы написали код для отображения названий этих городов в окне сообщения.

       MsgBox CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4) & ", " & CityList(5) 

      Когда мы запустим этот код, мы получим окно сообщения, которое показывает все названия городов в одном окне сообщения.

      Мы все знаем, что это сэкономило нам много времени, избавив нас от необходимости объявлять индивидуальные переменные для каждого города. Однако вам нужно усвоить еще одну вещь: мы все еще можем сократить код строк, которые мы пишем для строковых значений. Итак, давайте посмотрим, как мы пишем код для VBA. stringCode For VBA Функции StringString в VBA не заменяют строку; вместо этого эта функция создает новую строку. В VBA имеется множество строковых функций, и все они классифицируются как строковые или текстовые функции. Подробнее — массивы.

      Примеры массива строк в Excel VBA

      Ниже приведены примеры массива строк Excel VBA.

      Вы можете скачать этот шаблон Excel для массива строк VBA здесь — Шаблон Excel для массива строк VBA

      Пример № 1

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

      Нам не нужно заранее определять длину массива.

      Код:

       Sub String_Array_Example1()
      Dim CityList() как вариант
      Конец суб 

      Как вы можете видеть выше, мы не указали длины в скобках. Итак, теперь для этой переменной давайте вставим значения, используя функцию VBA ARRAY. Использование функции VBA ARRAYМассивы используются в VBA для определения групп объектов. В VBA есть девять различных функций работы с массивами: ARRAY, ERASE, FILTER, ISARRAY, JOIN, LBOUND, REDIM, SPLIT и UBOUND. Подробнее.

      Внутри массива передайте значения в двойных кавычках, разделяя их запятой (,).

      Код:

       Sub String_Array_Example()
      Dim CityList() как вариант
      CityList = Array("Бангалор", "Мумбаи", "Калькутта", "Хайдарабад", "Орисса")
      Конец суб 

      Теперь сохраните старый код, чтобы показать результат названий городов в окне сообщения в окне VBAMessage Box В VBAVBA функция MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную. Подробнее.

      Код:

       Sub String_Array_Example1()
      Dim CityList() как вариант
      CityList = Array("Бангалор", "Мумбаи", "Калькутта", "Хайдарабад", "Орисса")
      MsgBox CityList(0) & ", " & CityList(1) & ", " & CityList(2) & ", " & CityList(3) & ", " & CityList(4)
      Конец суб 

      Одно изменение, которое мы сделали в приведенном выше коде, заключается в том, что мы не определились с нижним пределом и верхним пределом переменной массива. Таким образом, счетчик массива функции МАССИВ будет начинаться с 0, а не с 1.

      Поэтому мы упомянули значения как   CityList(0), ClityList(1), CityList(2), CityList(3), и список городов (4).

      Теперь запустите код с помощью сочетания клавиш Excel Сочетание клавиш ExcelСочетание клавиш Excel — это метод выполнения ручного задания более быстрым способом. Подробнее F5 или вручную. Опять же, мы получаем тот же результат, что и предыдущий код.

      Пример #2

      Массив строк VBA с функциями LBOUND и UBOUND

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

      Теперь, чтобы включить цикл FOR NEXT, мы не уверены, сколько раз нам нужно запустить код. Конечно, в этом случае мы можем решить пять раз, но это неправильный подход к проблеме. Итак, как насчет идеи автоматических идентификаторов длины массива нижнего и верхнего уровня?

      Когда мы открываем цикл FOR NEXT, мы обычно определяем длину цикла от 1 до 5 или от 1 до 10, в зависимости от ситуации. Итак, вместо того, чтобы вводить числа вручную, давайте автоматически воспользуемся функциями LBOUND и UBOUND, чтобы выбрать нижнее и верхнее значения.

      Для LBound и Ubound мы указали имя массива CityList. VBA LBoundVBA LBoundLBound в VBA или «нижняя граница» извлекает наименьшее число массива. Например, если в массиве написано «Dim ArrayCount (от 2 до 10) как строка», то с помощью функции LBound мы можем найти наименьшее число длины массива, т. е. 2.читать больше определяет меньшее значение переменной массива. Функция VBA UBoundФункция VBA UBoundUBOUND, также известная как Верхняя граница, представляет собой функцию VBA, которая используется в сочетании со своей противоположной функцией, LBOUND, также известной как Нижняя граница. Эта функция используется для определения длины массива в коде, и, как следует из названия, UBOUND используется для определения верхнего предела массива. Подробнее определяет верхнее значение переменной массива.

      Теперь покажите значение в окне сообщения. Вместо того, чтобы вставлять серийный номер, пусть переменная цикла «k» автоматически принимает значение массива.

      Код:

       Sub String_Array_Example1()
      Dim CityList() как вариант
      Dim k как целое число
      CityList = Array("Бангалор", "Мумбаи", "Калькутта", "Хайдарабад", "Орисса")
      Для k = LBound(CityList) To UBound(CityList)
      MsgBox Ситилист(k)
      Следующий k
      End Sub 

      Теперь в окне сообщения будет отображаться название каждого города отдельно.

      Пример #3

      Массив строк VBA с функцией разделения

      Теперь предположим, что у вас есть названия городов, как показано ниже.

      Бангалор; Мумбаи; Калькутта; Гидрабад; Орисса

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

      Для выражения введите список городов.

      Код:

       Sub String_Array_Example2()
      Dim CityList() как строка
      Dim k как целое число
      CityList = Split("Бангалор;Мумбаи;Калькутта;Хидрабад;Орисса",
      Для k = LBound(CityList) To UBound(CityList)
      MsgBox Ситилист(k)
      Следующий k
      Конец суб 

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

      Код:

       Sub String_Array_Example2()
      Dim CityList() как строка
      Dim k как целое число
      CityList = Split("Бангалор;Мумбаи;Калькутта;Хидрабад;Орисса", ";")
      Для k = LBound(CityList) To UBound(CityList)
      MsgBox Ситилист(k)
      Следующий k
      End Sub 

      Теперь значения разделения функции SPLIT определяют максимальную длину массива.

      Что нужно помнить

      • Функции LBOUND и UBOUND определяют длину массива.
      • Функция МАССИВ может содержать много значений объявленной переменной.
      • Если мы хотим использовать функцию МАССИВ, не определяйте длину массива.

      Рекомендуемые статьи

      Эта статья представляет собой руководство по массиву строк VBA. Здесь мы обсудим, как объявить переменную массива строк VBA, которая может содержать более одного строкового значения, а также приведем практические примеры и загружаемый шаблон. Ниже вы можете найти несколько полезных статей по Excel VBA: –

      • Сравнение строк VBA
      • Найти размер массива в VBA
      • Подстрока в Excel VBA
      • Тип данных Variant в VBA

      excel — Есть ли простой способ добавить строку в начало и конец массива VBA

      1 If

      1 у меня есть этот код, есть ли простой способ добавить item1 в начало массива и item2 в конец массива в VBA?

      Приведенный ниже код в настоящее время выполняется.

       Dim nameArray как вариант
      Dim k как целое число
      Затемнить item1 как строку
      Затемнить item2 как строку
      к = 1
      nameArray = Диапазон (Ячейки (2, 3), Ячейки (5, 3)). Значение
          Для каждого i в nameArray
              новый столбец = baseclmn + k
              tblComp.ListColumns.Add(newcol).Name = i
              к = к + 1
          Далее я
       

      Спасибо за любую помощь, которую вы можете предложить

      • excel
      • vba

      4

      Вы можете начать с большего массива и заменить первый и последний элементы.

       Dim nameArray как вариант
      nameArray = Диапазон (Ячейки (1, 3), Ячейки (6, 3)). Значение
      nameArray(LBound(nameArray), 1) = "Элемент1"
      nameArray(UBound(nameArray), 1) = "Элемент2"
       

      3

      Если вы хотите расширить массив, возможно, что-то вроде этого:

       nameArray = Range(Cells(2, 3), Cells(5, 3)).Value
      Затемнить новый массив
      ReDim newArray(1 to Ubound(nameArray, 1) + 2, 1 to Ubound(nameArray, 2)) 'добавить две строки
      новый массив (1, 1) = "элемент1"
      новый массив (Ubound (новый массив, 1), 1) = "элемент2"
      Дим и пока
      For i = LBound(nameArray, 1) To Ubound(nameArray, 1)
         новый массив (я + 1, 1) = массив имен (я, 1)
      Следующий
       

      Объяснение:

      nameArray — это двумерный массив, в котором первое измерение соответствует строкам, а второе — столбцам. Обратите внимание, что этот массив основан на единице, т.е. первый индекс равен 9.0210 1 а не 0 .

      Код использует ReDim для создания нового массива, содержащего

      • На две строки больше, чем nameArray
      • То же количество столбцов, что и nameArray .

      Затем он добавляет первый и последний элементы:

      • newArray(1, 1) = "item1" : 1, 1 соответствует первой строке, первому столбцу.
      • новый массив (Ubound (новый массив, 1), 1) = "элемент2" : Ubound(newArray, 1) соответствует последней строке , а 1 снова соответствует первому столбцу.

      Наконец, он использует цикл для чтения элементов из nameArray в середину newArray .


      Дальнейшее полезное чтение включает Массивы и диапазоны в VBA.

      2

      Вы можете увеличить (и/или реструктурировать) существующий (вертикальный) nameArray за один раз

      • через недокументированную функцию Application. Index()
      • с использованием новой функции Sequence() (доступной начиная с MS 365!) или обходного пути через оценку строки (закомментировано в комментарии)

      для передачи целого массива (!) номеров строк ( rowArr ) в качестве аргумента (вместо индекса одной строки) :

       newArray = Application.Index(nameArray, rowArr, 1)
       

      где rowArr — это вертикальный массив последовательных номеров строк, отражающих существующие в данный момент индексы, а 1 — неизменный индекс столбца.

       Sub TopBottomAdditions()
      '0. определить 2-мерное поле данных на основе 1
      Dim nameArray
      nameArray = Sheet1.Range(Cells(2, 3), Cells(5, 3)).Value 'т.е. поле данных ячеек C2:C5
      '1a создать последовательность (массив) в диапазоне от 0 до количества элементов плюс +1 (2 новых элемента)
      Dim rowArr ' {0,1,2,..n,n+1}
      rowArr = WorksheetFunction.Sequence (UBound (nameArray) + 2, 1, 0)
      ''>обходной путь, если вы не избавляетесь от версии MS 365
      ' rowArr = Evaluate("строка(1:" & UBound(nameArray) + 2 & ")-1")
      '1b сохранить существующие значения в строках 1.