Ошибка EXCEL VBA: «Ошибка компиляции: ожидаемый массив»

Может кто-нибудь мне помочь?

Я получаю ошибку компиляции (…: «Ожидаемый массив») при работе с массивами в моей книге Excel.

В принципе, у меня есть один массив «mother» (2D, Variant type) и четыре «дочерних» массива (1D, Double type). Вызываемая подпрограмма создает публично объявленные массивы, которые мой основной макрос заканчивается для отображения. К сожалению, финал детского массива держится (давая «Ошибка компиляции: ожидаемый массив»). Как ни странно, если я удалю этот финальный набор ребёнка («final» – как в порядке объявления / определения), начинается второй до последнего детского массива.

Вот мой код:

Public Mother_Array() as Variant, BabyOne_Array(), BabyTwo_Array(), BabyThree_Array(), BabyFour_Array() as Double 'declare may other variables and arrays, too Sub MainMacro() 'do stuff Call SunRaySubRoutine(x, y) 'do stuff Range("blah") = BabyOne_Array: Range("blahblah") = BabyTwo_Array Range("blahbloh" = BabyThree_Array: Range("blahblue") = BabyFour_Array End Sub Sub SunRaySubRoutine(x,y) n = x * Sheets("ABC").Range("A1").Value + 1 ReDim Mother_Array(18, n) as Variant, BabyOne_Array(n), BabyTwo_Array(n) as Double ReDim BabyThree_Array(n), BabyFour_Array(n) as Double 'do stuff For i = 0 to n BabyOne_Array(i) = Mother_Array(0,i) BabyTwo_Array(i) = Mother_Array(2,i) BabyThree_Array(i) = Mother_Array(4,i) BabyFour_Array(i) = Mother_Array(6,i) Next End Sub 

Я попытался объявить все массивы как тип Variant, но безрезультатно. Я попытался дать BabyFour_Array () другое имя, но безрезультатно.

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

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

BANDAID: В качестве временного исправления я просто публично объявил пятый фиктивный массив (который не заполняется или не обновляется). Этот пятый массив не имеет никакого фактического использования, кроме того, что он обманывает систему из-за ошибки «Ошибка компиляции: ожидаемый массив».

Кто-нибудь знает, что вызывает проблему «Ошибка компиляции: ожидаемый массив» с помощью Excel VBA?

Благодаря,

Элиас

В ваших глобальных объявлениях вы объявляете только последний дочерний массив как Double . Вы объявляете первые три в качестве массивов Variants . Но в подпрограмме вы младенцы Redimming один и три в качестве вариантов, а два и четыре – как парные.

См. Эту страницу Chip Pearson и прокрутите вниз до «Обратите внимание на переменные, объявленные с помощью одного оператора Dim».

В VBA, когда вы заявляете что-то вроде:

 Dim x, y, z as Long 

только z – Long , остальные – Variants . Правильная форма:

Dim x as Long, Y as Long, Z as Long (или Double array в вашем случае.)

Вы можете видеть, как это приведет к описанному вами поведению, т. Е. К последним ошибкам, а другим – нет.

  • VB.Net - приложение Excel показывает значения диапазона
  • Значения 2D-массива на листе в определенном месте
  • Объединение ячеек в массив в excel
  • сумма формул excel по массиву
  • Использовать VBA для получения уникальных значений для использования в VBA?
  • Как сделать вывод данных макрокоманды с одного листа определенным образом в зависимости от начального значения строки
  • Формула поиска массива Excel
  • Суммарная сумма массива
  • Печать динамического массива ошибок на листе
  • Как перебирать рассеянный выбор ячеек с помощью массива
  • Объединить дубликаты и суммы столбцов
  • Interesting Posts

    Для каждого свойства класса в Excel VBA

    Формула массива INDEX MATCH для строк 1M

    Sumif для динамического диапазона столбцов

    вставьте строки, если они еще не существуют в листе excel, используя c #

    VLOOKUP по имени и фамилии без уникального идентификатора

    excel macro pass data между двумя формами, в которых установлен фокус

    Найти текст в нескольких столбцах в excel

    VBA: вставьте новый столбец слева от всех столбцов до последнего столбца

    Ошибка форматирования времени Excel

    VBA получает ключ по значению в Collection

    R – пакет xlsx – как добавить цвет ячеек без изменения границы

    MS Excel вставляет строки с разделителями табуляции из React-Copy-To-Clipboard в одну ячейку

    Как изменить рабочий лист Макрос для выполнения процедуры двойного щелчка по всей книге в Excel

    Мне нужна библиотека Java solver Library как оптимизация с помощью инструмента Excel Solver

    Распределить значение поровну в течение нескольких недель с начала и до конца

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