Excel, Compile VBAProject - изменить порядок компиляции модулей

Предположим, что мы находимся в редакторе Visual Basic, в Excel 2007. Мы создаем один модуль с именем modGlass:

Sub VolatileGlass()
    Dim Glass As shiny_surface

End Sub

а затем мы создаем второй модуль с именем modMetal:

Sub durableMetal()
    Dim metal As metal_compound

End Sub

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

Подпрограммы в обоих модулях содержат ошибку: "User-defined type not defined."

Когда я компилирую проект с помощью пункта меню Debug: Compile VBAProject, модуль modGlass всегда компилируется первым. Если я:

  • дважды щелкните модуль modMetal и скомпилируйте (это?) или
  • переименовать modMetal в amodMetal (чтобы металлический модуль теперь был первым в иерархии дерева модулей проекта)

тем не менее, модуль modGlass компилируется первым.

Вопрос: если у меня есть проект с несколькими модулями в VBE, можно ли указать, в какой последовательности будут компилироваться модули?

Мне на самом деле не нужна эта функция, но мне просто любопытно, есть ли какой-нибудь быстрый способ сделать это. Я использую Эксель 2007.


person colemik    schedule 22.03.2013    source источник


Ответы (1)


Модули компилируются не по их именам, а по последовательности их создания. Так что на самом деле не имеет значения, поставите ли вы «а» перед modMetal

Для проверки создайте два модуля. Убедитесь, что оба модуля имеют ошибки. Когда вы скомпилируете его, вы заметите, что модуль, который был создан первым, будет скомпилирован первым. Теперь удалите 1-й модуль и создайте его заново. На этот раз, когда вы его компилируете, второй (не вновь созданный) компилируется первым :)

Нет, к сожалению, нет прямого способа (AFAIK) указать эту последовательность. Однако грязный способ сделать это основан на том, что я предложил выше. Скопируйте все данные в блокнот, а затем удалите все модули, а затем заново создайте их с нуля (в том порядке, в котором вы хотите их скомпилировать)

ХТН

person Siddharth Rout    schedule 22.03.2013
comment
Спасибо за ответ. Чтобы указать последовательность, я изначально придумал импортировать и экспортировать модули обратно, но ваш способ их простого удаления/пересоздания быстрее. Ваше здоровье. - person colemik; 23.03.2013