Кто разбирается в визуал байсике??
* A. Для отображения свойств выбранного объекта
* B. Для изменения свойств выбранного объекта
* C. Для отображения списка файлов в проекте
* D. Для отображения списка форм в проекте
* E. Для показа макета проекта
# Как сохранить новый проект?
* A. Меню «File» — » Save Forml As»
* B. Меню «File» — » Save Project As»
* C. Кнопка «Save Project» на панели инструментов
* D. Меню «Project» — «Save Project As»
# Как отобразить окно свойств, если оно не видно в рабочей среде?
* A. Меню «View» — «Toolbox»
* B. Меню «View» — «Properties Window»
* C. Меню «View» — «Form Layout Window»
* D. Меню «View» — «Project Explorer»
# Какие файлы записываются на диск при сохранении проекта?
* A. Файл проекта
* B. Файл процедур
* C. Файл программного кода
* D. Файл формы
# Что из перечисленного является объектом?
* A. Форма
* B. Кнопка
* C. Процедура
* D. Любой элемент из окна инструментов
# Как сохранить форму в проекте?
* A. Меню «File» — «Save Project As»
* B. Меню «File» — «Save Forml As»
* C. Кнопка «Save Project» на панели инструментов
* D. Меню «Project» — «Save Forml As»
* E. Меню «Project» — «Save Project 1 As»
# Какое расширение получает файл проекта при сохранении его на диске?
* A. frm
* B. bas
* C. vbp
* D. com
* E. doc
* F. exe
# Как создать новый проект?
* A. При запуске VB в окне New Project выбрать «Standard EXE
* B. Меню «View» — «Project Window» — «New»
* C. Меню «Project» — «Add Project»
* D. Меню «File» «New Project» — выбрать «Standard EXE»
# Для чего служит вкладка Existing окна New Project?
* A. Для сохранения проекта на диске
* B. Для добавления новых форм в проект
* C. Для быстрого поиска существующих файлов проектов
* D. Для открытия окна кода
# Что такое проект в Visual Basic?
* A. Набор файлов различных форматов
* B. Программа на языке Visual Basic
* C. Набор окон рабочей среды
* D. Алгоритм выполнения программы
# Что отображается в окне проекта?
* A. Структура проекта
* B. Список файлов, входящих в проект
* C. Перечень свойств проекта
* D. Модель размещения объектов в проекте
* E. Список инструментов, которые можно использовать в проекте
# Как добавить в проект новую форму?
* A. Меню «Project» — «Add Form» — в окне «Add Form» — выбрать значок «Form»
* B. На панели инструментов выбрать кнопку «Add Form»
* C. Меню «File» — «Add Form» — в окне «Add Form» — выбрать значок «Form»
* D. В окне «Project» — установить курсор на любой объект — контекстное меню — «Add» — «Form»
* E. Меню «Edit» — «Add Form» — в окне «Add Form» — выбрать значок «Form»
# Какое расширение получает файл формы при сохранении его на диске?
# Сколько форм может содержать проект?
* A. Одну
* B. Три
* C. Сколько угодно
* D. Зависит от ресурсов компьютера
* E. Десять
# Что из перечисленного может являться событием объекта?
* A. Изменение программного кода
* B. Открытие и закрытие формы
* C. Щелчок по кнопке
* D. Изменение шрифта
* E. Изменение размера объекта
* F. Добавление формы
# Для чего предназначено окно «Toolbox»?
* A. Для отображения свойств выбранного объекта
* B. Для выбора объектов и размещения их на форме
* C. Для изменения свойств выбранного объекта
* D. Для показа макета проекта
* E. Для отображения списка файлов в проекте
Лучший ответ
# Для чего служит окно “Properties”?
* A. Для отображения свойств выбранного объекта
* B. Для изменения свойств выбранного объекта
# Как сохранить новый проект?
* B. Меню «File» — » Save Project As»
* C. Кнопка «Save Project» на панели инструментов
# Как отобразить окно свойств, если оно не видно в рабочей среде?
* B. Меню «View» — «Properties Window»
# Какие файлы записываются на диск при сохранении проекта?
* A. Файл проекта
* C. Файл программного кода
* D. Файл формы
# Что из перечисленного является объектом?
* D. Любой элемент из окна инструментов
# Как сохранить форму в проекте?
* B. Меню «File» — «Save Forml As»
# Какое расширение получает файл проекта при сохранении его на диске?
* C. vbp
# Как создать новый проект?
* A. При запуске VB в окне New Project выбрать «Standard EXE
* D. Меню «File» «New Project» — выбрать «Standard EXE»
# Для чего служит вкладка Existing окна New Project?
* C. Для быстрого поиска существующих файлов проектов
# Что такое проект в Visual Basic?
* B. Программа на языке Visual Basic
* C. Набор окон рабочей среды
# Что отображается в окне проекта?
* D. Модель размещения объектов в проекте
# Как добавить в проект новую форму?
* A. Меню «Project» — «Add Form» — в окне «Add Form» — выбрать значок «Form»
* B. На панели инструментов выбрать кнопку «Add Form»
# Какое расширение получает файл формы при сохранении его на диске?
* C. *.frm
# Сколько форм может содержать проект?
* C. Сколько угодно
# Что из перечисленного может являться событием объекта?
* C. Щелчок по кнопке
# Для чего предназначено окно «Toolbox»?
* A. Для отображения свойств выбранного объекта
* C. Для изменения свойств выбранного объекта
Обзор форм, элементов управления формы и ActiveX элементов управления на сайте
Благодаря формам, а также многочисленным элементам управления и объектам, которые можно в них добавить, значительно упрощается ввод данных в листы и улучшается их внешний вид. Вы также можете делать это самостоятельно, и вам почти или совсем не потребуется код Microsoft Visual Basic для приложений (VBA).
Форма листа и шаблон Excel — это не одно и то же. Шаблон — это предварительно отформатированный файл, который служит отправной точкой для создания книги с требуемым оформлением. Форма содержит элементы управления, такие как поля и раскрывающиеся списки, упрощающие ввод и изменение данных для использующих ваш лист. Дополнительные информацию о шаблонах, которые можно скачать, см. в Excel шаблонов.
Общие сведения о формах
Форма (печатная или веб-версия) — это документ со стандартной структурой и форматированием, который упрощает сбор, у упорядочение и редактирование сведений.
- Печатаемая форма содержит инструкции, форматирование, наклейки и пустые пробелы для ввода и ввода данных. Для создания печатных Excel и Excel шаблонов.
- Веб-формы содержат те же функции, что и печатные формы. Кроме того, веб-формы содержат элементы управления. Элементы управления — это объекты, которые отображают данные или упрощают ввод или изменение данных, выполнение действия или выбор данных. Как правило, элементы управления упрощают работу с формой. Примерами часто используемых элементов управления являются списки, переключатели и кнопки. Элементы управления также могут запускать назначенные им макросы и реагировать на события, например щелчки мышью, путем выполнения кода Visual Basic для приложений (VBA).
Создавать печатные Excel веб-формы можно несколькими способами.
Типы форм Excel
В Excel можно создавать формы нескольких типов: формы данных, листы с элементами управления формы и ActiveX, а также пользовательские формы VBA. Каждый из этих типов формы можно использовать по отдельности или сочетать с другими типами для создания нужного решения.
Форма данных
форма данных предоставляет удобный способ ввода или отображения одной строки данных из диапазона или таблицы, не требующий применения горизонтальной прокрутки. Использовать форму данных может быть проще, чем перемещаться между столбцами, которых слишком много для одновременного отображения на экране. Форму данных можно применять тогда, когда достаточно простой формы с текстовыми полями, в качестве подписей которых используются заголовки столбцов, и когда не требуются сложные или пользовательские возможности, например списки и счетчики.
Excel может автоматически создать встроенную форму данных для диапазон или таблица. Такая форма представляет собой диалоговое окно, в котором все заголовки столбцов отображаются в виде подписей. Каждой подписи соответствует текстовое поле, в которое можно вводить данные для столбца (максимальное количество столбцов — 32). В форме данных можно вводить новые строки, находить строки путем навигации или (на основе содержимого ячейки) обновлять строки и удалять их. Если ячейка содержит формула, ее результат отображается в форме данных, но саму формулу в форме данных изменить нельзя.
Лист с формой и элементами ActiveX
Этот тип формы позволяет вводить и просматривать данные в сетке. Кроме того, на Excel уже встроены некоторые функции, похожие на элементы управления, такие как приметки и проверка данных. Ячейки напоминают текстовые поля, которые можно вводить и форматированием различными способами. Ячейки часто используются в качестве подписей, и благодаря регулировке высоты и ширины ячеек, а также объединению ячеек можно настроить поведение таблицы как простую форму для ввода данных. Другие функции управления, такие как приметки к ячейкам, гиперссылки, фоновые изображения, проверка данных, условное форматирование, внедренные диаграммы и автофайл, могут привести к работе с таблицами как к расширенным формам.
Для большей гибкости вы можете добавлять элементы управления и другие объекты-рисунки полотно на полотно, а также объединять и координировать их с ячейками. Например, с помощью списка можно упростить выбор элементов в списке. Кроме того, можно упростить ввод номера с помощью счетчика.
Элементы управления и объекты хранятся на полотне, и поэтому их можно отображать и просматривать одновременно со связанным текстом, не зависящим от границ строк и столбцов, без изменения макета сетки или таблицы данных на листе. В большинстве случаев многие из этих элементов управления можно также связать с ячейками на листе, а для их нормальной работы не требуется создавать код VBA. Можно задать свойства, определяющие, является ли элемент управления свободно перемещаемым или перемещается и изменяет размеры вместе с ячейкой. Например, может потребоваться, чтобы флажок перемещался вместе со связанной ячейкой при сортировке диапазона. С другой стороны, если нужно, чтобы список всегда отображался в одном и том же месте, нежелательно, чтобы он перемещался вместе с ячейкой.
В Excel поддерживаются два типа элементов управления: элементы управления форм и элементы ActiveX. Кроме этих наборов элементов управления, вы также можете добавлять объекты из средств рисования, такие как автофигуры, объект WordArt, графические элементы SmartArt или текстовые поля.
В следующих разделах более подробно описываются элементы управления и средства рисования, а также работа с ними.
Элементы управления формы
Элементы управления формы появились в Excel раньше всего и поддерживаются в предыдущих выпусках Excel (начиная с версии 5.0). Их также можно использовать на листах макросов XLM.
Элементы управления формы используются, если вы хотите легко ссылаться на данные ячеок и взаимодействовать с ними, не используя код VBA, а также добавлять их на листы диаграмм. Например, после добавления элемента управления «список» на лист и связывания его с ячейкой можно вернуть числовые значения для текущего положения выбранного элемента управления. Затем можно использовать это число в сочетании с функцией ИНДЕКС для выбора различных элементов в списке.
С помощью элементов управления формы можно также выполнять макросы. Можно назначить элементу управления существующий макрос либо создать или записать новый. Когда пользователь формы щелкает элемент управления, запускается макрос.
Однако эти элементы управления невозможно добавить в пользовательские формы, использовать для управления событиями или изменить для запуска веб-сценариев на веб-страницах.
Обзор элементов управления формы
Название кнопки
Ограничения форм, вопросов, ответов и символов в Microsoft Forms
Совет: Узнайте больше о Microsoft Forms или сразу приступите к работе и создайте опрос, квиз или тест. Хотите использовать более сложные элементы фирменной символики, типы вопросов и анализ данных? Попробуйте Dynamics 365 Customer Voice.
В следующих таблицах показано количество форм и тестов, количество опросов, вопросов на форму или тест, ответов на форму/тест и ограничения символов для Microsoft Forms.
Ограничения формы, опроса, вопроса и ответа
Следующие вопросы и ответы применимы к средам Office 365 для образования,Приложения Microsoft 365 для бизнеса, облака сообщества государственных организаций США (GCC), GCC High и DoD, а также microsoft личная учетная запись (Hotmail, Live или Outlook.com).
-
Сколько форм и тестов можно создать?
- Для GCCH+DOD количество ответов, которые может получить форма или тест, составляет до 50 000.
- Для Microsoft личная учетная запись (Hotmail, Live или Outlook.com) количество ответов, которые может получить форма или тест, составляет до 200 для бесплатных учетных записей до 1000 для платных учетных записей.
Ограничение формы включает в себя те из них, которые содержатся в ячейке повторного цикла. (Например, 350 активных форм на портале Microsoft Forms + 50 форм в корзине = 400 форм.)
Когда респондент заполняет форму и отправляет ее, он считается одним ответом (независимо от количества вопросов в форме). Например, если форма содержит 100 вопросов и на все вопросы отвечают ровно 12 респондентов, форма будет считаться получившей 12 ответов.
Важно: Руководство «Один ответ на человека» применяется только в непрерывном наборе из 50 000 ответов и не гарантируется для полного набора данных при наличии более 50 000 ответов.
- До января 2021 г. опросы, созданные в Teams (собрания, чат и (или ) каналы), Outlook или PowerPoint , учитывались как часть ограничения в 400 форм. В настоящее время есть дополнительная надбавка в 400 опросов сверх текущего ограничения в 400 форм.
- Если вы принадлежите к команде, вы и ее сотрудники могут создать до 400 форм, которые будут отображаться на вкладке Групповые формы на странице портала forms.office.com . 400 форм, которые вы и ваша команда можете создать, являются дополнением к 400 отдельным формам, которые можно создать отдельно.
- Если у вас есть учетная запись Forms и учетная запись Dynamics 365 Customer Voice (ранее Microsoft Forms Pro), ограничение в 400 форм охватывает обе учетные записи.
- Мы заблокируем API результатов агрегирования, когда количество ответов и количество ответов * количество вопросов превышает:
- Biz: ответов 100K, ответов * вопросов более 10 млн.
* Представляет время (x) - Другая среда: количество ответов — 70 тыс., количество ответов * количество вопросов — более 5 млн.
Примечание: Для типа вопроса Likert каждый оператор считается одним вопросом. Например, в анкете можно использовать вопрос типа масштабирования Likert для сбора отзывов о событии. Варианты для каждого заявления могут быть: «Очень неудовлетворен», «Несколько неудовлетворен», «Ни удовлетворен, ни неудовлетворен», «Несколько удовлетворен», и «Очень удовлетворен». Два заявления — «Насколько вы удовлетворены местом?» и «Насколько вы удовлетворены питанием?» — будут считаться двумя вопросами.

Совет: Если вам требуется больше ответов, экспортируйте существующие ответы в книгу Excel, а затем очистите их из опроса или теста. Это позволит собрать больше ответов после очистки.
Возможности
Для Форм свыше 50 000 ответов пользователи могут экспортировать все ответы в качестве .csv для анализа. В настоящее время для форм свыше 50 000 ответов не поддерживаются следующие функции:
- Сводные диаграммы & диаграммы
- Просмотр отдельных ответов с сайта форм
- Печать
- Предоставление общего доступа к ссылке сводки
- Ручная оценка, комментирование и публикация оценок для викторин
Ограничения символов
Следующие вопросы и ответы применимы к средам Office 365 для образования,Приложения Microsoft 365 для бизнеса, облака сообщества государственных организаций США (GCC), GCC High и DoD, а также microsoft личная учетная запись (Hotmail, Live или Outlook.com).
-
Сколько символов разрешено для каждого вопроса?
- 200 000 символов — это максимально допустимое количество ответов на форму. Например, если форма содержит пять текстовых вопросов, а респондент уже достиг ограничения в 200 000 символов на четвертый вопрос, он не сможет предоставить ответ на пятый вопрос.
- В вопросе с несколькими вариантами не существует ограничения на количество вариантов. Однако символы в параметрах считаются символами, разрешенными для ответа на один вопрос. Если общее число символов параметров достигает предела в 4000, респондент не сможет выбрать больше параметров.
Что такое модуль? Какие бывают модули?
Любой код VBA должен где-то храниться. Для хранения кодов в VBA используются модули, которые хранятся в книге. Книга может содержать сколько угодно модулей. Каждый модуль в свою очередь может содержать множество процедур(макросов).
Все имеющиеся в книге модули можно посмотреть через редактор VBA ( Alt + F11 ). Если горячие клавиши не срабатывают, то в редактор Visual Basic можно перейти из вкладки Разработчик (Developer) — Visual Basic . Имеющиеся модули отображены в левой части редактора в проводнeике объектов(Project Explorer).
рис.1
Сам проводник объектов может быть не отображен по умолчанию и тогда его необходимо отобразить: нажать Ctrl + R либо в меню редактора VBA — View — Project ExplorerМодули делятся на пять основных типов:
- Стандартный модуль
- Модуль листа
- Модуль книги
- Модуль пользовательской формы
- Модуль класса
Вообще, если точнее, то всего-то два типа модуля — обычный и модуль класса, т.к. Модуль листа , Модуль книги , Модуль пользовательской формы и Модуль класса по своей сути являются модулями классов. Но я специально разделил их на несколько типов, т.к. именно такие типы часто употребляются при пояснениях в различных учебниках и на всевозможных форумах и в самих книгах Excel они по виду и некоторому функционалу различны.
Для того, чтобы создать новый стандартный модуль(Module) , модуль класса(ClassModule) или пользовательскую форму(UserForm) надо просто в окне Проводника объектов(Project Explorer) щелкнуть правой кнопкой мыши, выбрать пункт Insert и затем тип добавляемого объекта( Module , ClassModule , UserForm ). Так же добавить модуль можно и через меню: Insert -тип модуля.
Удалить тоже просто: щелкнуть правой кнопкой мыши на нужном модуле в окне проекта и выбрать Remove .
Подробнее про удаление и перемещение модулей описано в конце этой статьи:СТАНДАРТНЫЙ МОДУЛЬ
на рис.1 Module1
Самый распространенный тип модулей, который используется в большинстве случаев. Именно в них макрорекордер создает записываемые макросы. Все коды и процедуры в таких модулях пишутся вручную, либо копируются из других источников(другого модуля, с этого сайта и т.п.). В основном именно в стандартных модулях содержится большая часть кодов. Они предназначены для хранения основных процедур и Public переменных, которые могут быть доступны впоследствии из любого модуля. Как создать стандартный модуль: в окне проводника объектов щелкаем правой кнопкой мыши — Insert — Module . При записи макрорекордером модули создаются автоматически и им автоматически присваиваются имена.
Многие коды, опубликованные в статьях на сайте необходимо размещать именно в стандартных модулях. Для этого достаточно создать новый стандартный модуль, скопировать текст кода с сайта и вставить.МОДУЛЬ ЛИСТА
Лист1 или Sheet1 — на рис.1: Лист1(Лист1), Лист2(Лист2), Лист3(Лист3) .
Для каждого листа книги имеется свой отдельный модуль. Попасть в модуль листа проще, чем в остальные модули. Для этого надо просто щелкнуть правой кнопкой мыши по ярлычку листа и выбрать из контекстного меню пункт Исходный текст (View Code) .
в зависимости от версии Excel этот пункт на русском может называться так же: Просмотреть код или Исходный код :Можно и более трудным путем пойти — через редактор VBA: Alt + F11 и в окне Проводника объектов(Project Explorer) дважды щелкнуть по объекту с именем листа или правая кнопка мыши на модуле листа — View code .
Размещая код в модуле листа следует помнить, что при копировании или переносе данного листа в другую книгу код так же будет скопирован, т.к. является частью листа. Это и плюс и минус одновременно. Плюс в том, что разместив код в модуле листа можно использовать этот лист в качестве шаблона для распространения со своими кнопками вызова этих кодов(в том числе создания книг кодом) и весь функционал будет доступен. Минус же заключается в некоторых нюансах обращения к ячейкам(подробнее можно ознакомиться в этой статье: Как обратиться к диапазону из VBA) и необходимости размещения ВСЕХ используемых процедур в этом листе, иначе при переносе в другие книги коды могут работать с ошибками.В модуле листа содержатся встроенные событийные процедуры, каждая из которых отвечает за обработку определенного события на этом листе. Посмотреть их можно так: выбираете объект(на рисунке ниже список в левой части) Worksheet, а в правом списке выбираете событие(в этом списке все процедуры, доступные для выбранного листа):
Процедуры, события для которых уже используются, выделяются жирным шрифтом.
Названия событийных процедур носят достаточно информативные имена и большая их часть не нуждается в тщательной расшифровке. Но самые наиболее части применяемые в любом случае считаю нужным описать:
- Activate — возникает при активации самого листа(но не возникает, если произошел переход из одной книги в другую и этот лист является там активным)
- BeforeDoubleClick — возникает при двойном клике мыши на любой ячейке листа. Важно обращать внимание на передаваемые аргументы: Target и Cancel. Target — ссылка на ячейку, в которой было произведено действие; Cancel — отвечает за отмену режима редактирования
- BeforeRightClick — возникает при клике правой кнопкой мыши на любой ячейке листа. Важно обращать внимание на передаваемые аргументы: Target и Cancel . Target — ссылка на ячейку, в которой было произведено действие; Cancel — отвечает за отмену показа всплывающего меню
- Calculate — возникает при пересчете функций и формул на листе
- Change — возникает при изменении значений ячеек на листе. Важно обращать внимание на передаваемый аргумент Target . Target — ссылка на ячейку, которая была изменена. Может отличаться от активной в момент обработки ячейки
- Deactivate — возникает при переходе с этого листа на другой лист этой же книги
- FollowHyperlink — возникает при переходе по гиперссылке, созданной в этом листе
- SelectionChange — возникает при изменении адреса выделенной ячейки/области. Важно обращать внимание на передаваемый аргумент Target . Target — ссылка на диапазон ячеек, которые были выделены. Совпадает с выделенными на текущий момент ячейками
Достаточно важный момент: если захотите познакомиться поближе с событийными процедурами, всегда обращайте внимание на переменные, которые передаются в качестве аргументов в процедуру. В большинстве случаев рекомендую использовать именно эти переменные, а не выдумывать всякие возможности для вычисления объекта, который послужил причиной возникновения события. Для события листа Worksheet_Change это переменная Target . Для примера вставьте приведенный ниже код в модуль любого листа:
Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "Адрес измененной ячейки: " & Target.Address & _ "; Адрес активной ячейки: " & Selection.Address, vbInformation, "www.excel-vba.ru" End Sub
Private Sub Worksheet_Change(ByVal Target As Range) MsgBox «Адрес измененной ячейки: » & Target.Address & _ «; Адрес активной ячейки: » & Selection.Address, vbInformation, «www.excel-vba.ru» End Sub
После этого запишите в ячейку A1 значение 5 и нажмите Enter . Событие Change сработает в момент завершения редактирования — т.е. в момент нажатия Enter. При этом будет произведен переход на ячейку A2 (в большинстве случаев, если настройками не задано иное) и появится сообщение, которое покажет, что изменили ячейку A1 , а выделена сейчас A2 . Т.е. Target — это всегда ссылка именно на измененную ячейку независимо от того, что сейчас выделено. Данное событие( Worksheet_Change ) не будет срабатывать при изменении значений ячеек с формулами. Только ручной ввод.
Примечание : для всех кодов, приведенных на сайте, достаточно просто открыть необходимый модуль(книги или листа) и вставить предложенный код. Корректировка может понадобиться только в случаях, когда в модуле Листа или Книги вашего файла уже имеется код в необходимой событийной процедуре.
ВАЖНО : могут быть обработаны только те событийные процедуры, которые можно выбрать из списка справа. Если простым языком — каждое событие из этого списка VBE регистрирует «внутри себя», что позволяет в дальнейшем его отслеживать. Если просто написать какое-либо событие «от себя» — то оно никогда не запустится, потому что VBE про него ничего не знает. Например, нам необходимо отследить смену имени листа. Мы создаем событие вроде Worksheet_ChangeName(). Но оно никогда не запустится, т.к. про такое событие VBE ничего не знает, нигде его не регистрирует и не отслеживает.
МОДУЛЬ КНИГИ
ЭтаКнига или ThisWorkbook:В модуль книги можно попасть только через проводник объектов(Project Explorer) редактора VBA — двойной щелчок по ЭтаКнига (ThisWorkbook) или правая кнопка мыши на модуле — View code . В модуле книги так же содержатся «встроенные» событийные процедуры. Так же как и для листа выбираем в списке объектов(вверху слева) Workbook . В правом окне выбора процедур, так же как и с модулем листа, будут все процедуры, доступные для объекта ЭтаКнига . Пример использования событийных процедур книги можно посмотреть в статье Как отследить событие(например выделение ячеек) в любой книге?
Но там применяются все те же правила — главное не забывать про аргументы, доступные из этих процедур и передаваемые им самим Excel. Например, для события Workbook_BeforeClose доступен аргумент Cancel . Это можно использовать, если не хотите, чтобы книгу закрыл пользователь, не заполнив ячейку A1 . Вот пример подобного кода:Private Sub Workbook_BeforeClose(Cancel As Boolean) If Me.Sheets("Отчет").Range("A1").Value = "" Then MsgBox "Необходимо заполнить ячейку A1 на листе 'Отчет'", vbCritical, "www.excel-vba.ru" Cancel = True 'отменяем закрытие книги End If End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Me.Sheets(«Отчет»).Range(«A1»).Value = «» Then MsgBox «Необходимо заполнить ячейку A1 на листе ‘Отчет'», vbCritical, «www.excel-vba.ru» Cancel = True ‘отменяем закрытие книги End If End Sub
Из кода видно, что на листе «Отчет» должна быть не пустой ячейка A1 (лист «Отчет» тоже должен существовать в этой книге). Но есть и еще одна вещь — какое-то Me . Это краткое обращение к объекту модуля класса, в данном случае это равнозначно обращению ThisWorkbook .
А ниже пример кода для модуля ЭтаКнига , который запрещает сохранять исходную книгу, разрешая сохранить её только через пункт Сохранить как (SaveAs) :Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If SaveAsUI = False Then 'используется простое сохранить MsgBox "Эта книга является шаблоном. Сохранять её можно только через Сохранить как", vbCritical, "www.excel-vba.ru" Cancel = True 'отменяем сохранение книги End If End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If SaveAsUI = False Then ‘используется простое сохранить MsgBox «Эта книга является шаблоном. Сохранять её можно только через Сохранить как», vbCritical, «www.excel-vba.ru» Cancel = True ‘отменяем сохранение книги End If End Sub
Такое может потребоваться, если книга является шаблоном с полями для заполнения и необходимо предотвратить случайное сохранение исходного документа. Хотя это можно так же сделать без макросов — книгу можно сохранить с правами только на чтение.
И еще один пример — отслеживание активации листов. Может пригодиться, чтобы при активации конкретного листа сделать какое-либо конкретное действие. В коде ниже при активации листа «Лист4» будет показываться сообщение, но действие может быть любым(обновление данных, снятие защиты, установка защиты и т.п.):Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "Лист4" Then MsgBox "Вы перешли на Лист4", vbInformation, "www.excel-vba.ru" End If End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = «Лист4» Then MsgBox «Вы перешли на Лист4», vbInformation, «www.excel-vba.ru» End If End Sub
Обращаю внимание, что здесь, как и раньше, мы используем передаваемые процедуре аргументы. В данном случае это объект Sh — это именно тот лист, который мы активировали.
МОДУЛИ ФОРМ
UserForm — на рис.1 UserForm1 .
Содержатся внутри Пользовательской формы(UserForm) и её объектов. В Пользовательских формах в основном все завязано именно на событийных процедурах самой формы и на элементах этой формы(Кнопки, ТекстБоксы, КомбоБоксы(выпадающие списки) и т.д.). Очень удобно использовать Пользовательские формы в своих приложениях для общения с пользователем. Т.к. через формы очень удобно отслеживать действия пользователя и можно запретить доступ к листам с данными, путем их скрытия. Создается форма так же как и модуль: в окне проводника объектов щелкаем правой кнопкой мыши-Insert—UserForm. Примеры кодов с использованием форм можно посмотреть в статьях: Каждому пользователю свой лист/диапазон, Как оставить в ячейке только цифры или только текст?МОДУЛЬ КЛАССА
ClassModule — на рис.1 Class1 .
В большинстве случаев создается специально для отслеживания событий различных объектов. Вряд ли понадобиться начинающим изучение VBA, хотя все зависит от поставленной задачи. Но обычно начинающим изучать это кажется слишком сложным. В любом случае, перед работой с модулями классов лучше научиться хоть чуть-чуть работать с обычными модулями и самостоятельно писать процедуры. Как добавить такой модуль: в окне проводника объектов щелкаем правой кнопкой мыши-Insert—Class Module. Подробнее про модули классов и работу с ними можно почитать в этой статье: Работа с модулями классов. Там описаны все основные принципы и приложен файл примера.УДАЛЕНИЕ МОДУЛЯ
Действия по удалению любого из модулей одинаковы для всех типов. Для этого необходимо перейти в проект VBA нужной книги, выбрать нужный модуль, щелкнуть по нему правой кнопкой мыши и в появившемся меню выбрать Remove (Имя модуля). (Remove Module1, Remove UserForm1, Remove Class1 и т.п.). После этого появится окно с запросом «Do you want to export (имя модуля) before removing it?». Это означает, что VBA спрашивает: хотите ли Вы сохранить копию кодов модуля перед удалением? Как правило выбирать следует Нет. Но если Вы хотите сохранить текст кодов из удаляемого модуля в отдельном файле, то соглашаетесь, нажав Да. Будет предложено выбрать папку для сохранения модуля и можно даже задать ему отдельное имя.ПЕРЕНОС, ИМПОРТ и ЭКСПОРТ МОДУЛЯ
Иногда нужно модуль из одной книги переместить в другую. Сделать это можно несколькими способами. Самый простой — открыть обе книги, перейти в проводник проектов -найти нужный модуль -захватить его левой кнопкой мыши и не отпуская кнопку перетащить на проект другой книги:Следует помнить, что так можно перенести и скопировать только стандартный модуль, модуль класса и модуль UserForm . Коды модулей листов и книги придется переносить как обычный текст: переходим в модуль ЭтаКнига (откуда хотим копировать) -копируем весь код -переходим в модуль ЭтаКнига второй книги и вставляем скопированное:
Экспорт модуля(сохранение в отдельный файл)
Если же надо сохранить стандартный модуль, модуль класса или модуль формы и не переносить сразу же в другую книгу, то можно экспортировать модуль. Для чего это может быть нужно? Как правило, чтобы перенести коды из дома на работу, переслать кому-то на другой ПК(пересылка файла с макросами может быть запрещена политикой безопасности компании) и т.п. Делается это просто: щелкаем на модуле правой кнопки мыши —Export file.
У экспортируемых модулей есть разные расширения, в зависимости от типа модуля. Для стандартных модулей это .bas (Module1.bas), для модулей класса — .cls (Class1.cls). А вот для модулей форм будет создано целых два файла: UserForm1.frm и UserForm1.frx . Их важно хранить вместе — один без другого не может быть импортирован в дальнейшем в файл. В файле .frx хранится информация об визуальном отображении формы и её элементах, если можно так сказать. В файле .frm хранятся непосредственно тексты кодов для формы и служебная информация(имя и размеры формы, некоторые глобальные директивы и ссылка на файл .frx). Поэтому не рекомендуется без соответствующих навыков переименовывать эти два файла в надежде, что потом все заработает.
Импорт модуля(перенос экспортированного ранее в новую книгу)
Для переноса экспортированного модуля в другую книгу надо просто в проводнике объектов выделить нужный проект правой кнопкой мыши —Import module -выбрать в диалоговом окне нужный модуль.
Экспортировать можно любой модуль, а вот импортировать — нет. Модули листов и книг хоть и экспортируются в отдельные файлы(кстати, с расширением .cls), но импортировать их не получится в том виде, как это предполагается. Они будут импортированы как новые модули класса и только. Поэтому для переноса кодов из модулей листов и книг придется использовать все равно копирование и вставку непосредственно кодов.
И в довершение — можно переносить модули автоматически, кодами VBA: Как добавить код процедуры программно, скопировать модульСтатья помогла? Поделись ссылкой с друзьями!
- Biz: ответов 100K, ответов * вопросов более 10 млн.