2014-11-05 19 views
0

У меня есть три модуля (стандартный модуль, а не модуль класса) в моем проекте Excel VBA. Один из них был добавлен щелчком правой кнопки мыши по VBAProject и вставкой модуля. Два из них были добавлены путем выполнения «modules.add»; Я думаю, что модули означают листы модулей, верно? Итак, мои вопросы:
1. Что означает модуль в VBA?
2. Как узнать, какой модуль создан при добавлении листа модулей?
3. Почему, когда я добавляю рабочий лист, не появляется модуль?В чем разница между модулем и листом модуля?

+1

Этот вопрос лучше всего подходит для superuser.com? –

+0

[очистите руки] (http://msdn.microsoft.com/en-us/library/ee199701.aspx) –

ответ

1

A модуль - это просто место для размещения вашего кода. Вы можете просто увидеть его как лист бумаги, где вы можете что-то написать.

В Excel вы можете поместить свой код в модуль или «за» лист (что вы называете листом). Модуль всегда добавляется вручную ВАМИ. «Модульный лист» является частью листа и, таким образом, добавляется или удаляется BY EXCEL автоматически при создании или удалении листа.

Когда вы помещаете в модуль некоторый код и переменные, его мгновенно можно получить со всех листов в вашей книге, dependinv о том, как вы объявляете свои переменные, подсистемы и функции (частные/общедоступные)

Обычно, когда один код помещается за листом, это потому, что этот код предназначен только для вызова с этого конкретного рабочего листа и только для выполнения операций над ним. Я никогда personnaly не работают на уровне рабочего листа по нескольким причинам:

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

  • Если вы экспортируете лист, вы также экспортируете код.

  • Если вы дублируете лист, вы также продублируете код.

  • , если вы хотите запустить код позади конкретного листа из другого места, вы должны полностью квалифицировать ваши звонки и переменные, что противный решение, а также обычный скучный

Мой совет: в EXCEL, никогда не работают на уровне листа, использует модули, и если вы достигаете приличное количество кода, организовать его в логические группы с помощью нескольких модулей

0

RE 1: Модуль похож на одноэлементный класс, который уже был инициализирован, так сказать. Другими словами, код модуля (общедоступные свойства/переменные, общедоступные методы и т. Д.) Всегда доступен, не нужно наследовать экземпляр перед попыткой его использовать, однако все данные в свойствах/переменных модуля являются общими "приложениями -wide "

RE 2: Это« листовой модуль », а не« лист модуля ». Это означает, что только добавленный лист имеет модуль с ним, когда вы его добавляете. Нет никакой разницы между этим, или добавлением модуля к листу позже. Вы можете открыть окно редактора кода и увидеть модули, классы и т. Д., Нажав ALT + F11

RE 3: По умолчанию код VBA не добавляется ни на один новый лист из соображений безопасности. Если в книге есть макрос (код VBA), требуется дополнительное внимание, поэтому по умолчанию книга не является учебным заведением VBA (макро).

И последнее, но не менее важное: обратите внимание, что между одним модулем нет разницы. Способ создания модуля не влияет на поведение модулей, и есть только один «тип модуля» (а также один «тип модуля класса») в приложениях Office (Excel, Word и т. Д.).

+0

«И последнее, но не менее важное: обратите внимание, что между одним модулем нет разницы». Это не совсем правда. Если вы добавите модуль с использованием устаревшего синтаксиса 'modules.add', вы получите модуль Excel 5/95, который считается частью коллекции' Sheets'. – Rory

0

для числа 2:

Sub moduleAdd() 
Modules.Add 
'Modules.Add 
qq = Modules.Count 
MsgBox "total added module by code = " & qq 

For ii = 1 To qq 
Set modu = Modules(ii) 
If ii = qq Then MsgBox "Newly added module = " & modu.Name 
Next 
End Sub 
Смежные вопросы