Как перенести значение в нестандартный размер массива с помощью Excel VBA

Я ищу помощь, чтобы развернуть синтаксический анализ из XML на основе определенного соответствия фильтра / слова в arraylist. Однако этот массив не должен иметь предварительно определенный размер массива, так как входы XML являются динамическими из файла в файл. Смысл, XML-файл1 может иметь 10 таких входов, а XML-файл2 может содержать 15 входов. Может кто-то PLS посоветуйте, как я могу сделать ниже 2things:

  1. как определить список массивов с предварительным определением размера массива? размер зависит от списка входных данных XML, когда пользователь считывает узел по узлу
  2. Когда найдено совпадение XML-слов, будет анализировать вход / значение xml в Excel VBA и хранить внутри этого массива.

Массивы можно определить как

 Dim MyArray() as string 

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

 Redim MyArray(lb to ub) 

или, чтобы сохранить любые существующие данные, находящиеся в массиве

 Redim Preserve MyArray(lb to ub) 

lb и ub являются границами массива и могут быть определены кодом, например

 lb = 1 ub = <number of matched found in xml> 

постепенное изменение размера

 redim MyArray (0 to 0) For each line in xml if Match then MyArray(ubound(MyArray)) = Match Redim Preserve MyArray(0 to ubound(MyArray) + 1) end if Next ' Array ends up 1 size larger than number of matches ' if ubound(MyArray) > 0 then redim Preserve MyArray (0 to ubound(MyArray) - 1) end if 

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

 Temp = "" Separator = "," For A = 1 to 155 If Temp <> "" Then Temp = Temp & Separator End If Temp = Temp & CStr(A) Next 'A myArray = Split(Temp, Separator) 'now myArray has the elements 1, 2, ..., 155 (which are strings!) 

Это может быть полезно при определенных особых обстоятельствах, поскольку это несколько более интуитивно понятный способ. Опасайтесь, что массив, который вы создаете таким образом, представляет собой массив строк!

Давайте будем гением компьютера.