Хитрости »

Что такое модуль? Какие бывают модули?

 

Любой код VBA должен быть где-то записан. Для хранения кодов в VBA имеются модули. Имеется пять основных типов модулей. Модуль листа, модуль книги, стандартный модуль, модуль пользовательской формы, модуль класса. Вообще, если точнее, то всего-то два типа модуля – обычный и модуль класса, т.к. Модуль листа, модуль книги, модуль пользовательской формы и модуль класса по своей сути являются модулями классов. Но я специально разделил их на несколько типов, т.к. именно такие типы часто употребляются при пояснениях в различных учебниках и на всевозможных форумах.

Модуль листа(Лист1 или Sheet1) - на рис.2: Лист1(Лист1),Лист2(Лист2),Лист3(Лист3). Для каждого листа книги имеется свой отдельный модуль. Попасть в модуль листа проще, чем в остальные модули. Для этого надо просто щелкнуть правой кнопкой мыши по ярлычку листа и выбрать из контекстного меню пункт Исходный текст(View Code)(рис.1).

Перейти в модуль листарис.1

Можно и более трудным путем пойти – через редактор VBA: Alt+F11 и в окне Проводника объектов дважды щелкнуть по объекту с именем листа(рис.2).

Объекты проектарис.2
Если данное окно у Вас не отражается нужно нажать Ctrl+R либо в меню редактора VBA-View-Project Explorer(рис.3)
Проводник объектоврис.3

В модуле листа содержатся встроенные событийные процедуры, каждая из которых отвечает за обработку определенного события на этом листе. Названия данных процедур носят достаточно информативные имена и не думаю, что нуждаются в расшифровке(Change – изменения значений ячеек на листе, SelectionChange – изменение адреса выделенной ячейки/области и т.д.). Посмотреть их можно так: выбираете в списке объектов(на рис.4 помечен 1) Worksheet, а в правом окне выбора процедур(на рис.4 помечен 2) Вы найдете все процедуры, доступные для выбранного листа. Процедуры, события для которых уже используются, выделены жирным шрифтом.

Окно выбора процедур и объектоврис.4


Модуль книги(ЭтаКнига или ThisWorkbook) – на рис.2: ЭтаКнига. В модуль книги можно попасть только через редактор VBA описанным выше способом. Двойной щелчок по ЭтаКнига(ThisWorkbook). В модуле книги так же содержатся “встроенные” событийные процедуры. Так же как и для листа выбираете в списке объектов, только не Worksheet, а Workbook. В правом окне выбора процедур Вы найдете все процедуры, доступные для объекта ЭтаКнига.

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

Примечание: для всех кодов, приведенных на сайте, достаточно просто открыть необходимый модуль(книги или листа) и вставить предложенный код. Корректировка может понадобиться только в случаях, когда в модуле Листа или Книги Вашего файла уже имеется код в необходимой событийной процедуре.


Стандартный модуль(Module) - на рис.2 Module1.Для стандартных модулей нет предопределенных событийных процедур, поэтому в них процедуры пишутся полностью вручную(макрорекордер записывает макросы также именно в эти модули). В основном именно в стандартных модулях содержится большая часть кодов. Они предназначены для хранения основных процедур и Public переменных, которые могут быть доступны впоследствии из любого модуля. Как создать стандартный модуль: в окне проводника объектов щелкаем правой кнопкой мыши-Insert-Module. При записи макрорекордером модули создаются автоматически.

Модули форм(UserForm) – на рис.2 UserForm1. Содержаться внутри Пользовательской формы(UserForm) и её объектов. В Пользовательских формах в основном все завязано именно на событийных процедурах самой формы и на дочерних объектах этой формы(Кнопки, ТекстБоксы, КомбоБоксы и т.д.). Очень удобно использовать Пользовательские формы в своих приложения для, так сказать, общения с пользователем. Т.к. через формы очень удобно отслеживать действия пользователя и можно запретить доступ к листам с данными, путем их скрытия. Создается форма так же как и модуль: в окне проводника объектов щелкаем правой кнопкой мыши-Insert-UserForm.

Модуль класса(ClassModule) – на рис.2 Class1. В большинстве случаев создается специально для отслеживания событий различных объектов. Вряд ли понадобиться начинающим изучение VBA, хотя все зависит от поставленной задачи. В любом случае, перед работой с модулями классов лучше научиться хоть чуть-чуть работать с обычными модулями и самостоятельно писать продедуры. Создается: в окне проводника объектов щелкаем правой кнопкой мыши-Insert-Class Module. Подробнее про модули классов можно почитать в этой статье: Работа с модулями классов

Для того, чтобы создать новый модуль(Module), модуль класса(ClassModule) или пользовательскую форму(UserForm) надо просто в окне Проводника объектов(Project Explorer) щелкнуть правой кнопкой мыши, выбрать пункт Insert и затем тип добавляемого объекта(ModuleClassModuleUserForm).
 

Также см.:
Копирование модулей и форм из одной книги в другую

 

Обсуждение: оставлено 14 коммент.
  1. Юлия, какой LOG и какое отношение он имеет к этой статье?

  2. Юлия:

    Дмитрий, добрый день!
    ошиблась статьей, вопрос тоже к вам но по статье “Ведение журнала сделанных в книге изменений”.

  3. Valeriй:

    Дмитрий(Админ)
    -я Вас люблю))))

Поделитесь своим мнением

Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Много работаете в Excel, но понимаете, что используете его не на полную?
Пройдите один из тренингов и работайте в Excel эффективно!Заказать

Вы постоянно выполняете однотипные действия в Excel или Word?
Вам надоела рутина?
Закажите создание макроса(программы) - быстро, качественно, недорого!Заказать

Реклама
Логин
Счетчики
Анализ сайта
Рейтинг@Mail.ru
Яндекс.Метрика
© 2014 Excel для всех  Войти