Как открыть окно редактора visual basic из формы в режиме конструктора для обработки события

Обновлено: 22.04.2024

Создавая базу данных, вы обычно начинаете с создания нескольких объектов базы данных, таких как таблицы, формы и отчеты. Рано или поздно наступает момент, когда нужно добавить программный код, чтобы автоматизировать определенные процессы и связать объекты базы данных друг с другом. Прочитав эту статью, вы получите представление о средствах программирования в Access.

В этой статье

Программирование

Программирование в Access — это процесс добавления функций в базу данных с помощью макроса Access или кода VBA Visual Basic для приложений (VBA). Предположим, например, что вы создали форму и отчет и хотите добавить в форму кнопку, при нажатии на которую открывается отчет. В данном случае программированием является создание макроса или процедуры VBA с настройкой свойства события OnClick для запуска макроса или процедуры нажатием кнопки. Для простой операции, например открытия отчета, можно воспользоваться мастером кнопок для работы или отключить мастер и программировать его самостоятельно.

Примечание: Во многих программах Microsoft Office термин "макрос" относится к коду VBA. Это может запутать пользователей Access, так как в этом приложении термин "макрос" относится к именованному набору макрокоманд, для создания которого используется конструктор макросов. Макрокоманды Access — это лишь часть команд, доступных в VBA. Конструктор макросов обладает более структурированным интерфейсом, чем редактор Visual Basic, что позволяет добавлять программный код к элементам управления и объектам без необходимости изучать код VBA. Следует помнить, что в статьях справки Access макросы Access называются просто макросами. С другой стороны, код VBA может называться VBA, кодом, функцией или процедурой. Код VBA содержится в модулях классов (это части отдельных форм и отчетов, обычно содержащие код только для этих объектов), а также в модулях (они не привязаны к определенным объектам и обычно содержат "глобальный" код, который можно использовать во всей базе данных).

Объекты, например формы и отчеты, и элементы управления, такие как кнопки и текстовые поля, обладают разными свойствами событий, к которым можно прикреплять макросы или процедуры. Каждое свойство события связано с определенным событием, например со щелчком мышью, открытием формы или изменением данных в текстовом поле. События могут также инициироваться факторами извне Access, например системными событиями, а также макросами или процедурами, прикрепленными к другим событиям. Если добавить много макросов или процедур к нескольким свойствам событий для большого числа объектов, база данных может получиться сложной, но в большинстве случаев для достижения нужных результатов потребуются минимальные усилия по программированию.

Выбор в пользу макросов или кода VBA

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

Принимая решение об использовании макросов или кода VBA, вы должны учесть два аспекта: безопасность и необходимую функциональность. Безопасности следует уделить особое внимание, так как VBA можно использовать для создания кода, который способен нарушить защиту данных или повредить файлы на локальном компьютере. Если вы используете базу данных, созданную не вами, не включайте код VBA, если не уверены в том, что база данных получена из надежного источника. Создавая базу данных, предназначенную для других людей, не используйте средства программирования, которые могут привести к тому, что пользователям потребуется явно предоставить ей статус надежной. Чтобы избежать такой ситуации, воспользуйтесь распространенными приемами, описанными ниже в этом разделе.

Чтобы обеспечить безопасность базы данных, применяйте макросы везде, где это возможно, а программирование с помощью VBA используйте только для операций, которые невозможно выполнить с помощью макрокоманд. Более того, следует использовать только такие макрокоманды, для выполнения которых не требуется предоставлять базе данных статус надежной. При таком ограничении использования макрокоманд пользователи будут уверены в том, что база данных не содержит программного кода, который может повредить данные или другие файлы на их компьютерах.

Рекомендации по использованию макросов

Начиная с выпуска 2010 в Access предлагается много новых макрокоманд, с помощью которых можно создавать более функциональные макросы, чем в более ранних версиях приложения. Например, теперь можно с помощью макрокоманд создавать и использовать глобальные временные переменные, а также более изящно обрабатывать ошибки, применяя новые специализированные макрокоманды. В более ранних версиях Access это можно было сделать только с помощью кода VBA. Кроме того, можно внедрить макрос прямо в свойство события объекта или элемента управления. Внедренный макрос становится частью объекта или элемента управления и сохраняется при их перемещении и копировании.

Макрос — это простой способ выполнения многих задач программирования, таких как открытие и закрытие форм и запуск отчетов. Вы можете быстро и легко связать созданные объекты базы данных (формы, отчеты и т. д.), так как вам не нужно помнить о синтаксисе. Аргументы для каждой макро макроки отображаются в конструкторе макроса.

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

Назначение действия или набора действий ключу. Для этого необходимо создать группу макросов с именем AutoKeys.

Выполнение действия или последовательности действий при первом открытии базы данных. Для этого необходимо создать макрос с именем AutoExec.

Примечание: Макрос AutoExec запускается раньше, чем любой другой макрос или код VBA, даже если вы назначили в диалоговом окне Параметры Access начальную форму и прикрепили к ее событию OnOpen или OnLoad макрос или код VBA.

Дополнительные сведения о создании макросов см. в разделе Макросы.

Рекомендации по использованию VBA

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

Использовать встроенные функции или создать собственные. В Access есть множество встроенных функций, например IPmt, которая вычисляет процентные платежи. С помощью этих встроенных функций можно выполнять вычисления, не создавая сложных выражений. Используя код VBA, вы также можете создать собственные функции для выполнения вычислений, которые требуют создания слишком сложных выражений или не могут быть выполнены с их помощью. Кроме того, созданные функции можно включать в выражения, что позволяет выполнять часто используемые операции с разными объектами.

Создавать объекты и обрабатывать их. Вы увидите, что в большинстве случаев проще всего создать или изменить объект в режиме конструктора. Но в некоторых случаях вам может потребоваться изменить определение объекта в коде. С помощью VBA можно обрабатывать все объекты в базе данных, а также манипулировать самой базой данных.

Выполнять действия на уровне системы. Чтобы запустить из Access другую программу (например, Microsoft Excel), можно выполнить макрос с макрокомандой RunApp, но в целом возможности применения макросов для выполнения действий вне Access ограничены. С помощью VBA можно проверить, существует ли на компьютере определенный файл, воспользоваться технологией Automation или DDE для взаимодействия с другими программами для Microsoft Windows, такими как Excel, и вызвать функции из библиотек DLL в Windows.

Обрабатывать записи поочередно. Используя код VBA, можно обработать набор записей, выполнив поочередно операцию над каждой из них. В то же время макрос обрабатывает все записи из набора одновременно.

Выполнение распространенных задач программирования с помощью мастера кнопок

Добавьте в форму кнопку, и мастер кнопок поможет вам приступить к программированию. С помощью мастера вы сможете создать кнопку для выполнения определенной задачи. В файле Access (ACCDB) мастер создает макрос, внедренный в свойство OnClick этой кнопки. В MDB- или ADP-файле мастер создает код VBA, так как в этих форматах не поддерживаются внедренные макросы. В любом случае вы можете затем изменить или дополнить макрос или код VBA в соответствии со своими потребностями.

В области навигации щелкните правой кнопкой мыши форму, в которую нужно добавить кнопку, и выберите пункт Конструктор.

На вкладке Конструктор щелкните стрелку вниз, чтобы открыть коллекцию Элементы управления, и убедитесь в том, что пункт Использовать мастера выделен.

На вкладке Конструктор в коллекции Элементы управления щелкните элемент Кнопка.

На бланке формы щелкните там, где нужно поместить кнопку.

Откроется мастер кнопок.

На первой странице мастера в списке Категории щелкните каждую категорию, чтобы посмотреть, какие действия можно запрограммировать для кнопки. В списке Действия выберите нужное действие, а затем нажмите кнопку Далее.

Выберите параметр Текст или Рисунок в зависимости от того, что нужно отобразить на кнопке.

Если вы хотите отобразить текст, то можете изменить содержимое поля рядом с параметром Текст.

Если вам нужен рисунок, мастер предложит изображение в соответствующем списке. Если вы хотите выбрать другой рисунок, установите флажок Показать все рисунки, чтобы отобразить список всех доступных в Access изображений для кнопок, или нажмите кнопку Обзор, чтобы выбрать рисунок, сохраненный в отдельном файле.

Введите понятное имя для кнопки. Это необязательный шаг, и это имя не отображается на кнопке. Тем не менее рекомендуем указать понятное имя, чтобы было легко отличить эту кнопку от других позже (например, при настройке последовательности табуляции для элементов управления формы). Например, если кнопка закрывает форму, можно назвать ее cmdClose или CommandClose.

Кнопка будет размещена в форме.

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

Если окно свойств не отображается, нажмите клавишу F4.

В окне свойств откройте вкладку События.

В окне свойства "По щелчку" нажмите кнопку "Построить" .

Откроется конструктор макросов, в котором будет показан макрос, созданный мастером. При желании макрос можно изменить (дополнительные сведения о редактировании макросов см. в разделе Макросы). Когда вы закончите, на вкладке Конструктор в группе Закрыть нажмите Закрыть, чтобы закрыть конструктор макросов. Если будет предложено сохранить изменения и обновить свойство, нажмите Да, чтобы сделать это, или Нет, чтобы отказаться.

На вкладке Конструктор в группе Режимы нажмите кнопку Режим и выберите пункт Режим формы. Нажмите новую кнопку, чтобы проверить, правильно ли она работает.

Макросы

Макрос — это инструмент, позволяющий автоматизировать задачи и добавлять функции в формы, отчеты и элементы управления. Например, если добавить в форму кнопку, то можно связать ее свойство события OnClick с макросом и включить в него команды, которые должны выполняться при нажатии этой кнопки.

Макросы Access можно рассматривать как упрощенный язык программирования, код на котором создается в виде списка необходимых действий. Создавая макрос, вы выбираете каждую макрокоманду из раскрывающегося списка, а затем вводите для нее необходимую информацию. С помощью макросов можно добавлять функции в формы, отчеты и элементы управления без необходимости писать код в модуле VBA. В макросах доступно подмножество команд VBA, и большинство людей считают, что создать макрос легче, чем написать код VBA.

Создать макрос можно с помощью конструктора макросов, который показан на этом рисунке:

Вот как можно открыть конструктор макросов:

на вкладке Создание в группе Макросы и код нажмите кнопку Макрос.

Код VBA

Как и макросы, код VBA можно использовать в Access для автоматизации и добавления функций. Вы можете расширить возможности VBA за счет элементов управления сторонних поставщиков, а также создать собственные функции и процедуры для конкретных целей.

Самый быстрый способ приступить к написанию программного кода VBA — создать макрос Access, а затем преобразовать его в код VBA. Инструкции см. в разделе Преобразование макросов в код VBA. В этом случае будет создан модуль VBA, который выполняет те же операции, которые определены в макросе. Кроме того, откроется редактор Visual Basic, так что вы сможете приступить к редактированию процедуры. При работе в редакторе Visual Basic можно щелкнуть интересующее вас ключевое слово и нажать клавишу F1, чтобы открыть справку разработчика Access и ознакомиться с соответствующей статьей. Затем вы можете продолжить изучение справки разработчика Access и узнать о новых командах, которые пригодятся для ваших задач.

Преобразование макросов в код VBA

В Access можно автоматически преобразовать макросы в модули VBA или модули классов. Вы можете преобразовать макросы, прикрепленные к форме или отчету, независимо от того, внедрены они или являются отдельными объектами. Кроме того, можно преобразовать глобальные макросы, которые не прикреплены к конкретной форме или отчету.

Примечание: Веб-базы данных поддерживают код Visual Basic для приложений (VBA), но его невозможно запустить, когда такая база данных работает в браузере. Чтобы выполнить код VBA, который содержится в веб-базе данных, ее необходимо открыть в Access. Для задач, связанных с программированием, в веб-базах данных следует использовать макросы Access.

Преобразование макросов, прикрепленных к форме или отчету

Этот процесс преобразует в VBA все макросы, на которые ссылается форма, отчет или любой из их элементов управления (либо которые внедрены в форму, отчет или элемент управления), а затем добавляет код VBA в модуль класса формы или отчета. Модуль класса становится частью формы или отчета и сохраняется при их перемещении или копировании.

В области навигации щелкните форму или отчет правой кнопкой мыши и выберите пункт Конструктор.

На вкладке Конструктор в группе Сервис нажмите Преобразовать макросы формы или Преобразовать макросы отчета.

Если модуль класса для формы или отчета не существует, access создаст его и добавит в модуль процедуру для каждого макроса, связанного с формой или отчетом. Кроме того, Access изменяет свойства событий формы или отчета таким образом, чтобы они запускали новые процедуры VBA вместо макроса.

Чтобы просмотреть и изменить код VBA, сделайте следующее:

Форма или отчет должны быть по-прежнему открыты в режиме конструктора. Если окно свойств не отображается, нажмите клавишу F4.

На вкладке "События" окна свойств щелкните любое поле свойства, в которое будет отображаться [Процедура мероприятия],и нажмите кнопку сборки . Чтобы просмотреть свойства событий для определенного элемента управления, щелкните его, чтобы выбрать. Чтобы просмотреть свойства событий для всей формы или отчета, в верхней части окна свойств выберите в раскрывающемся списке пункт Форма или Отчет.

Откроется редактор Visual Basic с процедурой обработки событий в соответствующем модуле класса. Чтобы просмотреть другие процедуры, которые хранятся в этом модуле класса, прокрутите содержимое вверх или вниз.

Преобразование глобальных макросов

В области навигации щелкните правой кнопкой мыши макрос, который нужно преобразовать, и выберите пункт Конструктор.

На вкладке Конструктор в группе Сервис щелкните Преобразовать макросы.

В диалоговом окне Преобразование макроса установите нужные флажки и нажмите кнопку Преобразовать.

Макрос будет преобразован, и откроется редактор Visual Basic.

Чтобы просмотреть и изменить код VBA, сделайте следующее:

В редакторе Visual Basic, если область Project Explorer (Окно проекта) не отображается, в меню View (Вид) выберите пункт Project Explorer.

Разверните дерево под именем базы данных, в которой вы работаете.

В разделе Модули дважды щелкните модуль Преобразованный макрос — .

Модуль откроется в редакторе Visual Basic.

Прикрепление функции VBA к свойству события

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

В редакторе Visual Basic посмотрите, как называется функция. Например, если преобразовать макрос с именем MyMacro, функции будет присвоено имя MyMacro().

Закройте редактор Visual Basic.

В области навигации щелкните правой кнопкой мыши форму или отчет, который нужно связать с функцией, и выберите в контекстном меню пункт Конструктор.

Щелкните элемент управления или раздел, с которым вы хотите связать функцию.

Если окно свойств не отображается, нажмите клавишу F4.

В окне свойств на вкладке События щелкните поле свойства события, с которым нужно связать функцию.

В поле свойства введите знак равенства (=), а затем — имя функции (например, =MyMacro(). Не забудьте ввести скобки.

Сохраните форму или отчет, нажав на панели быстрого доступа кнопку Сохранить.

В области навигации дважды щелкните форму или отчет и проверьте, правильно ли работает код.

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

Заходим в Настройки Excel (круглая кнопка в левом верхнем углу) — нажимаем кнопку Параметры Excel — первая вкладка Основные — ставим галочку Показывать вкладку «Разработчик» на ленте. Вкладка должна появиться рядом со вкладкой Вид.

Где вкладка Конструктор в Excel?

Для ActiveX управления:

Как добавить вкладку Макет в Excel?

Щелкните диаграмму, формат которой вы хотите изменить. Откроется панель Работа с диаграммами с дополнительными вкладками Конструктор, Макет и Формат. На вкладке Конструктор в группе Макеты диаграммы щелкните макет диаграммы, который следует использовать.

Где находится программа Excel?

Где конструктор таблиц в Excel?

Выделите ячейки таблицы. Выберите Работа с таблицами > Конструктор (на компьютерах Mac следует открыть вкладку Таблицы), а затем в группе Параметры стилей таблиц установите или снимите указанные ниже флажки.

Как включить режим конструктора в Excel 2016?

Для Excel 2016 зайдите в Параметры — Настройка ленты — в разделе Основные вкладки справа поставьте галочку в пункте Разработчик, и нажмите кнопку ОК.

Где находится вкладка Работа с таблицами в Экселе?

Как сделать макет в Экселе?

Сохранение книги в виде шаблона

Где находится вкладка Работа с диаграммами?

Для вставки диаграммы в Word, начиная с версии 2007, нужно нажать кнопку Диаграмма на вкладке Вставка в группе Иллюстрации, после чего откроется диалоговое окно Вставка диаграммы.

Как называется программа Excel?

Microsoft Excel (также иногда называется Microsoft Office Excel) — программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS, а также Android, iOS и Windows Phone.

Где в Excel настройки?

На вкладке Файл выберите команду Параметры . Выберите пункт Центр управления безопасностью , а затем в разделе Центр управления безопасностью Microsoft Office Excel нажмите кнопку Параметры центра управления безопасностью .

Как сделать настройки по умолчанию в Excel?

Чтобы приступить к работе, выберите Файл > Параметры > Данные и нажмите кнопку Изменить макет по умолчанию .

Как включить режим конструктора в Excel 2016?

  1. На вкладке файл выберите Параметры> Настройка ленты.
  2. В разделе Настройка ленты в списке Основные вкладки установите флажок Разработчик.

Как открыть VBA в Excel 2019?

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже.

Где находится работа с таблицами в Экселе?

Как включить VBA в Excel 2016?

Как войти в режим конструктора в Excel?

Для ActiveX управления:

Как установить Visual Basic в Excel?

Как открыть редактор макросов Excel?

Как написать макрос в Excel 2016?

Как перейти в VBA в Excel?

Вставляем код VBA в книгу Excel

  1. Открываем рабочую книгу в Excel.
  2. Нажатием Alt+F11 вызываем окно редактора Visual Basic.
  3. На панели Project-VBAProject кликаем правой кнопкой мыши по имени рабочей книги (в левой верхней части окна редактора) и в контекстном меню выбираем Insert > Module.

Как включить макросы в Excel 2020?

Параметры макроса не меняются во всех программах Office.

Как запустить Visual Basic?

Во всех приложениях Office это делается одинаково:

  1. самый простой способ: в меню Сервис выбрать Макрос -> Редактор Visual Basic;
  2. самый быстрый способ: нажать +;
  3. можно также воспользоваться кнопкой на панели инструментов Visual Basic (предварительно сделав ее видимой);

Где находится раздел Работа с таблицами в Ворде?

В разделе Работа с таблицами откройте вкладку Макет. В группе Таблица нажмите кнопку Выделить и выберите команду Выделить таблицу. В разделе Работа с таблицами откройте вкладку Конструктор. В группе Стили нажмите кнопку Границы и выберите вариант без границы.

Как найти конструктор в Excel?

Как включить режим конструктора в Экселе?

Как включить? Заходим в Настройки Excel (круглая кнопка в левом верхнем углу) — нажимаем кнопку Параметры Excel — первая вкладка Основные — ставим галочку Показывать вкладку «Разработчик» на ленте.

Где находится программа Excel?

Как найти вкладку конструктор?

Включение окна «Конструктор»

Открыть вкладку «Вставка» — «Таблица» — выбрать любое количество ячеек, пусть даже 2*2. Таблица появилась на странице. Автоматически после ее создания, появится вкладка «Работа с таблицами», внутри которой будет подраздел «Конструктор».

Как выйти из режим конструктора в Excel?

Чтобы она заработала нужно в панеле инструментов выбрать Элемент Увравления и там есть ВЫХОД ИЗ РЕЖИМА КОНСТРУКТОРА, который и запускает кнопку при его отключении.

Как войти в режим конструктора в Access?

Открыть таблицу в режиме Конструктора можно одним из двух следующих способов:

  1. выделить таблицу в списке таблиц в окне базы данных и нажать кнопку Конструктор (Design) в верхней части окна базы данных;
  2. щелкнуть правой кнопкой мыши на имени таблицы и из контекстного меню выбрать команду Конструктор (Design).

Что собой представляет программа Excel?

Где в Эксель вкладка Макет?

На вкладке Конструктор в группе Макеты диаграммы щелкните макет диаграммы, который следует использовать. Примечание: При уменьшении размера окна Excel макеты диаграмм становятся доступными в коллекции Экспресс-макет в группе Макеты диаграмм.

Где папка Xlstart?

Папки, которые Excel использует при запуске

Где находится папка Xlstart?

XLSTART – это папка для автозагрузки файлов вместе с запуском программы Excel. Если сохранить файл в данную папку, то он будет открываться вместе с программой Excel. Для версий старше 2007 путь к папке автозагрузки будет следующим: C:Program FilesMicrosoft OfficeOffice12Xlstart.

Как сделать настройки по умолчанию в Excel?

Чтобы приступить к работе, выберите Файл > Параметры > Данные и нажмите кнопку Изменить макет по умолчанию .

Как включить режим конструктора в Word?

  1. На вкладкеРазработчик нажмите кнопку Режим конструктора.
  2. Кликните элемент управления содержимым, у которого вы хотите изменить замещающий пояснительный текст.
  3. Отредактируйте и отформатируйте замещающий текст.

Как открыть конструктор таблицы?

Для запуска режима конструктора таблиц необходимо открыть вкладку «Создание», а затем щёлкнуть по пиктограмме . На рисунке 10 представлено окно конструктора таблицы (с наименованиями полей будущей таблицы), которое будет открыто в основном окне базы данных.

Для того чтобы открыть окно редактора, достаточно открыть любой модуль Access (рис. 13.12).

Замечание

Даже в локализованных версиях Access окно редактора кода VBA, а также все другие диалоговые окна, составляющие среду программирования VBA, традиционно не локализуются. Поэтому все рисунки в этом разделе главы, а также экранные термины (названий команд меню, диалоговых окон и т. д.) приводятся в нелокализованном варианте.

Рис. 13.12. Окно редактора кода VBA

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

  • Project (Панель проекта), располагается в верхнем левом углу редактора. В ней отображается иерархическое дерево модулей приложения. Если это окно неактивно, выполните команду View, Project Explorer либо нажмите комбинацию клавиш +.
  • Properties (Панель свойств), находится под панелью проекта. Она позволяет просматривать и изменять свойства различных входящих в проект объектов, отображаемых на панели проекта. Список свойств может отображаться как в алфавитном порядке, так и по категориям.
  • Code (Панель редактора кода). Это окно занимает большую часть экрана и является "многодокументным", т. е. можно открыть одновременно несколько окон данного типа для разных модулей. Оно представляет собой высокоинтеллектуальный текстовый процессор, существенно облегчающий написание кода VBA.

Проект приложения состоит из модулей, которые делятся на три категории:

  • Microsoft Access Class Objects (Модули классов Access) — включает все модули форм и отчетов;
  • Modules (Модули) — стандартные модули;
  • Class Modules (Модули классов) — модули пользовательских классов, если они присутствуют в приложении.

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

В верхней части панели проекта расположены три кнопки:

  • View Code (Просмотр кода). При нажатии этой кнопки указатель мыши перемещается в окно кода, в котором отображается код выделенного в иерархии проекта объекта.
  • View Object (Просмотр объекта). Эта кнопка доступна только когда в дереве проекта выделен модуль формы или отчета. Тогда она позволяет быстро переключиться на соответствующий модулю объект, т. е. в окно Конструктора формы или отчета.
  • Toogle Folders (Переключение видов представления дерева). При нажатой кнопке все элементы в дереве проекта группируются в папках по категориям, при отжатой — они отображаются в алфавитном порядке..

Панель свойств позволяет просматривать и изменять свойства различных объектов, входящих в проект. Для отображения свойств объекта его нужно выделить либо в дереве проекта, либо в окне Конструктора формы (отчета). Во многом эта панель дублирует диалоговое окно Свойства (Properties) в формах и отчетах. И в том и в другом случае изменение свойств объекта статично, поэтому они могут быть использованы для задания начальных или постоянных свойств объекта.

Чтобы изменить значение свойства объекта, необходимо:

  1. Выделить имя свойства в левой колонке.
  2. Изменить значение в правой колонке, либо введя его вручную, либо путем выбора из списка.

Для каждого модуля, выбранного на панели проекта, открывается свое окно редактора кода. В данном случае в окне редактора мы видим модуль "Заставка" (Startup) приложения "Борей" (рис. 13.13).

Для модуля формы этот список включает раздел General (Общая область), который содержит объявления переменных, констант, специальных типов, внешних процедур. Данный раздел открывается по умолчанию при открытии окна кода. Для стандартного модуля этот раздел единственный — он содержит описание всех процедур. Модуль класса имеет разделы General и Class. Модуль формы, кроме раздела General, содержит раздел самой формы и разделы для каждого элемента управления. Модуль отчета включает в себя раздел для объекта Report (Отчет) и разделы для каждой области отчета. Для полей отчета не определены события, поэтому отсутствуют и соответствующие разделы в модуле кода.

Рис. 13.13. Стандартный модуль в окне редактора

Каждый раздел может содержать несколько процедур, выбираемых из списка Procedure в правом верхнем углу окна на рис. 13.13. Список процедур в стандартном модуле содержит Declarations (Описания) и имена всех процедур модуля в алфавитном порядке. Список процедур для модуля формы включает в себя перечень всех событий формы и ее элементов. Для модуля класса список процедур содержит только две процедуры для событий класса: Initialize и Terminate.

С помощью кнопок в левом нижнем углу окна можно выбрать один из видов представления кода в окне.

  • Procedure View (Представление процедуры), когда в окне отображается только одна выбранная процедура.
  • Full Module View (Представление полного модуля), когда в окне отображается сразу несколько процедур, отделенных друг от друга тонкой линией.

Для настройки параметров редактора используется также диалоговое окно Options (Параметры), которое можно открыть, выбрав команду Options в меню Tools (Сервис) (рис. 13.14). Это окно описывает только параметры редактора кода и вызывается из среды редактора кода.

Рис. 13.14. Диалоговое окно параметров редактора кода

Оно содержит четыре вкладки.

Первая вкладка Editor (Редактор) состоит из двух групп параметров: Code Settings и Window Settings.

  • Группа Code Settings (Программирование) содержит шесть флажков, которые позволяют включать и отключать интеллектуальные функции редактора, такие как автоотступ, автоматическая проверка синтаксиса, подсказки при написании пользователем программ.
  • Группа Window Settings (Параметры окна) включает в себя три флажка, влияющих на представление кода в окне редактора. Эти флажки позволяют переключаться между представлениями полного модуля и процедуры, выводить или не выводить на экран тонкие линии, разделяющие процедуры, включать или отключать функцию перетаскивания текста, т. е. перемещения выделенного фрагмента кода с помощью мыши.

Вторая вкладка Editor Format (Формат редактора) позволяет определить шрифт, его размер и цвет для разных областей текста. Открыв любой модуль, вы можете убедиться, что текст программ представлен несколькими цветами: по умолчанию комментарии выделяются зеленым цветом, ключевые слова — синим. При отладке программ используются и другие цветовые выделения фрагментов текста: точек останова, текущей команды и т. д. Все эти способы выделения могут быть настроены в соответствии с вашим вкусом в данном окне.

Третья вкладка General (Общая) содержит несколько групп переключателей и флажков.

Последняя группа флажков определяет, когда компилируются модули проекта:

  • Compile On Demand — определяет, будут ли все модули проекта компилироваться перед началом работы или только по требованию, в первом случае запуск приложения будет более длительным;
  • Background Compile — определяет, будет ли компиляция модулей выполняться в фоновом режиме.

На последней вкладке Docking находятся флажки, позволяющие закрепить положение основных окон на экране.

Для того чтобы убедиться, что наши утверждения об интеллектуальности редактора не являются голословными, достаточно попробовать написать даже самую простую программу. Давайте заменим в форме "Клиенты" (Customers) макрос, который открывает форму "Заказы" (Orders) при нажатии кнопки Заказы клиента, процедурой VBA, которая выполняет те же действия. Мы создавали такой макрос в разд. "Назначение макроса событию"гл. 11. Если вы этого не делали, тогда создайте сейчас командную кнопку в области заголовка окна и назовите ее "Заказы клиента" (кнопка Мастера на панели элементов при этом должна быть отжата).

После этого нажмите кнопку Программа (Code) на панели инструментов. Откроется редактор кода VBA, который по умолчанию попытается создать процедуру обработки события Load формы. Выберите из списка слева объект Заказы клиента. Редактор автоматически вставит заголовок и концовку процедуры обработки события Click (рис. 13.15). Открыв список справа, вы можете увидеть, как много различных событий связано с командной кнопкой, однако наиболее часто используется именно событие Click. Так как с этим событием сейчас не связано никакой процедуры, редактор сразу пытается ее создать.

Начнем писать текст процедуры. Процедура будет состоять из нескольких команд. Нам необходимо открыть форму "Заказы" (Orders) и показать в этой форме только те заказы, которые относятся к определенному клиенту, поэтому придется задать условие для отбора записей в форме "Заказы" (Orders). Обычно для этого используют переменную типа string, которой сначала присваивают нужное значение, а потом подставляют в качестве параметра в макрокоманду Открытьформу (OpenForm). Чтобы использовать такую переменную, ее сначала нужно описать, поэтому первое предложение в процедуре должно быть следующим:

Dim stLinkCriteria As String

Рис. 13.15. Создание процедуры обработки события

Как только вы напишете первые три слова Dim stLinkCriteria As, на экране появится список слов (рис. 13.16), которые могут быть использованы в данном предложении.

Рис. 13.16. Автоматический вывод списка компонентов

Вы набираете следующие буквы — str, после чего курсор в списке устанавливается на слове string. Дальше можно не продолжать, а просто нажать клавишу — конец слова допишется автоматически. Нажмите клавишу , курсор перейдет на новую строку, а текст во введенной строке изменится: все ключевые слова — Dim, As, string — будут выделены синим цветом. При вводе ключевых слов можно не беспокоиться о том, чтобы слово начиналось с заглавной буквы. Вы можете набирать весь текст строчными буквами — необходимое преобразование будет выполняться автоматически. Но, конечно, названия переменных, элементов управления и других объектов, на которые имеются ссылки в тексте, вы должны вводить сами с использованием нужного регистра, т. к. в них преобразования выполняться не будут.

Следующая строка будет присваивать переменной strLinkCriteria значение: stLinkCriteria = "[КодКлиента]=" & "'" & Me![КодКлиента] & "'"

Две формы будут связаны по значению поля CustomerID. Первое выражение [КодКлиента] относится к форме "Заказы" (Orders), а второе значение Me! [КодКлиента] — к текущей форме "Клиенты" (Customers), о чем говорит слово Me. Теперь используем макрокоманду Открыть форму (OpenForm) для того, чтобы открыть форму "Заказы" (Orders). Как только набирается docmd, появляется новая подсказка — список макрокоманд (рис. 13.17).

Рис. 13.17. Автоматический вывод методов объекта

Уже известным способом выбираем нужную макрокоманду, нажимаем пробел и опять подсказка — синтаксис макрокоманды Открыть форму (OpenForm) (рис. 13.18).

Рис. 13.18. Автоматический вывод кратких сведений

И это очень кстати, т. к. позволяет не запоминать все аргументы макрокоманды и порядок их следования. Введите имя формы: Заказы (Orders), запятую, и опять появится подсказка с именами возможных констант, которые могут быть указаны в следующем параметре. Выберите константу acNormal и продолжайте ввод. Должна получиться строка:

DoCmd.OpenForm "Заказы", acNormal, , stLinkCriteria

Две следующие подряд запятые говорят о пропущенном параметре — имя фильтра.

Теперь добавим еще одну команду — изменим заголовок формы:

Forms!Заказы.Caption = "Заказ" & Название

И наконец, напишем комментарий, который объясняет, что делает данная программа. Для этого поместите курсор в начало второй строки программы и нажмите клавишу . Появится пустая строка. Введите символ (') в начало новой строки и пишите дальше текст комментария. Закончите ввод нажатием клавиши , и вы увидите, что комментарий оказался выделен зеленым цветом. В целом текст программы должен выглядеть как на рис. 13.19.

Рис. 13.19. Программа открытия формы "Заказы"

На примере этой простой программы мы продемонстрировали три очень полезных свойства редактора.

Когда вы уже усвоите язык VBA, такие подсказки могут показаться вам навязчивыми. Тогда вы можете отключить их, сбросив соответствующие флажки в диалоговом окне Options (Параметры) редактора кода (вкладка Editor).

Однако при необходимости вы легко получите требуемую помощь, если воспользуетесь контекстным меню редактора кода (рис. 13.20).

Рис. 13.20. Контекстное меню редактора кода

Кроме описанных выше функций, в контекстном меню присутствуют и другие очень полезные функции, способствующие быстрому написанию кода, — List Constants, Parameter Info, Complete Word, а также две команды, очень упрощающие навигацию среди программных модулей:

  • Definition. Если в процедуре выполняется вызов другой процедуры, то, установив курсор на имя вызываемой процедуры и выбрав из контекстного меню команду Definition (а еще быстрее, нажав комбинацию клавиш +), вы сразу попадете в тело вызываемой процедуры;
  • Last Position — позволяет после такого перехода вернуться обратно.

Команда Definition позволяет также быстро открыть окно Object Browser и посмотреть описание нужного свойства, метода или объекта приложения. Для этого нужно установить курсор на интересующий объект, свойство, метод и нажать комбинацию клавиш +.

Если вы создали много макросов, а потом решили перейти к программированию на VBA, не следует беспокоиться о том, что придется заново переписывать на VBA все созданные макросы. В Access существует возможность автоматического преобразования макросов в процедуры на VBA. Это касается как макросов, связанных с событиями в формах и отчетах, которые преобразуются в процедуры обработки событий, так и общих макросов, не связанных с формами и отчетами. Все они преобразуются в отдельные стандартные модули.

Давайте попробуем преобразовать в процедуры обработки событий макросы, назначенные событиям формы "Наклейки для клиентов" (Customers Labels Dialog):

  1. Откройте форму "Наклейки для клиентов" (Customers Labels Dialog) в режиме Конструктора.
  2. Выберите команду Сервис, Макрос, Преобразовать макросы формы (Tools, Macro, Convert form's Macros to Visual Basic).
  3. В диалоговом окне Преобразование макроса формы (Convert form macros) (рис. 11.19) нажмите кнопку Преобразовать (Convert), оставив флажки установленными по умолчанию.

Рис. 11.19. Преобразование макроса в процедуру VBA

  1. Когда преобразование закончится, в форме "Наклейки для клиентов" (Customers Labels Dialog) щелкните правой кнопкой мыши, например по кнопке Отменить, и выберите команду Свойства (Properties).
  2. В диалоговом окне Свойства (Properties) раскройте вкладку События (Events).
  3. В поле для события Нажатие кнопки (On Click) оказалось установленным значение [Процедура обработки событий] ([Event Procedure]). Щелкните по кнопке Построителя, находящейся справа от поля, — откроется окно редактора VBA с текстом процедуры (рис. 11.20).

Рис. 11.20. Процедура, полученная из макроса

Аналогично выполняется преобразование макросов, назначенных событиям отчета.

Теперь рассмотрим преобразование в процедуру VBA макроса, не связанного с событием формы или отчета, например созданного ранее макроса "Менеджеры по продажам".

Рис. 11.21. Результат преобразования макроса "Менеджеры по продажам"

После преобразования исходный макрос "Менеджеры по продажам" не был удален, а в списке модулей в окне базы данных "Борей" появился новый модуль с именем "Преобразованный макрос — Менеджеры по продажам" (Converted Macro — Менеджеры по продажам).

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

В Widget примере класса используются традиционные операторы обработки событий. Visual Basic предоставляет другие методы работы с событиями. В качестве упражнения можно изменить этот пример, чтобы использовать AddHandler инструкции и Handles инструкции.

Обработка события PercentDone класса Widget

Поместите следующий код в Form1 :

Ключевое WithEvents слово указывает, что переменная mWidget используется для обработки событий объекта. Тип объекта можно указать, указав имя класса, из которого будет создан объект.

Переменная mWidget объявляется в Form1 том, что WithEvents переменные должны быть уровнями класса. Это верно независимо от типа класса, в который вы размещаете их.

Переменная mblnCancel используется для отмены LongTask метода.

Написание кода для обработки события

Как только вы объявляете переменную с помощью WithEvents , имя переменной появится в левом раскрывающемся списке редактора кода класса. При выборе mWidget Widget события класса отображаются в правом раскрывающемся списке. При выборе события отображается соответствующая процедура события с префиксом mWidget и символом подчеркивания. Все процедуры событий, связанные с переменной WithEvents , присваиваются имени переменной в виде префикса.

Чтобы обработать событие

Выберите mWidget в раскрывающемся списке слева в редакторе кода.

PercentDone Выберите событие из раскрывающегося списка справа. Редактор кода открывает процедуру mWidget_PercentDone события.

Редактор кода полезен, но не требуется для вставки новых обработчиков событий. В этом пошаговом руководстве удобнее просто скопировать обработчики событий непосредственно в код.

Добавьте следующий код в обработчик событий mWidget_PercentDone .

При каждом PercentDone вызове события процедура события отображает процент завершения в элементе Label управления. Метод DoEvents позволяет подписи перекрашивать, а также дает пользователю возможность нажать кнопку "Отмена ".

Добавьте следующий код для обработчика Button2_Click событий:

Если пользователь нажимает кнопку "Отмена" во время LongTask выполнения, Button2_Click событие выполняется сразу после того, как DoEvents инструкция разрешает обработку событий. Переменная mblnCancel уровня класса имеет значение True , а mWidget_PercentDone затем событие проверяет его и задает для аргумента ByRef Cancel значение True .

Подключение переменной WithEvents к объекту

Form1 теперь настраивается для обработки Widget событий объекта. Все, что остается, это найти Widget где-то.

При объявлении переменной WithEvents во время разработки объект не связан с ней. Переменная WithEvents похожа на любую другую объектную переменную. Необходимо создать объект и назначить ему ссылку с помощью переменной WithEvents .

Создание объекта и назначение ссылки на него

Выберите (События формы1) из раскрывающегося списка слева в редакторе кода.

Load Выберите событие из раскрывающегося списка справа. Редактор кода открывает процедуру Form1_Load события.

Чтобы создать Widget процедуру события, Form1_Load добавьте следующий код:

При выполнении этого кода Visual Basic создает Widget объект и соединяет его события с процедурами событий, связанными с mWidget . С этого момента при каждом Widget вызове события PercentDone mWidget_PercentDone выполняется процедура события.

Вызов метода LongTask

Добавьте следующий код в обработчик событий Button1_Click .

Перед вызовом LongTask метода метка, отображающая процент завершения, должна быть инициализирована, а флаг уровня Boolean класса для отмены метода должен иметь значение False .

LongTask вызывается с длительностью задачи 12,2 секунды. Событие PercentDone вызывается каждые одну треть секунды. При каждом вызове mWidget_PercentDone события процедура события выполняется.

Когда LongTask все будет готово, проверяется, mblnCancel закончился ли LongTask он обычно, или если он остановлен, так как mblnCancel задано значение True . Процент завершения обновляется только в первом случае.

Чтобы выполнить программу, выполните следующие действия.

Нажмите клавишу F5, чтобы поместить проект в режим выполнения.

Метод My.Application.DoEvents не обрабатывает события точно так же, как и форма. Например, в этом пошаговом руководстве необходимо дважды нажать кнопку "Отмена ". Чтобы форма обрабатывала события напрямую, можно использовать многопоточность. Дополнительные сведения см. в разделе "Управляемые потоки".

Может оказаться, что программа запускается с помощью F11 и выполняется пошаговое выполнение кода по строке за раз. Вы можете четко увидеть, как выполняется LongTask выполнение, а затем кратко повторно вводится Form1 при каждом вызове PercentDone события.

Что произойдет, если при возврате выполнения в код Form1 LongTask метода был вызван еще раз? В худшем случае переполнение стека может произойти при LongTask каждом вызове события.

Переменная mWidget может обрабатывать события для другого Widget объекта, назначая ссылку новому Widget объекту mWidget . На самом деле вы можете сделать код Button1_Click таким образом каждый раз, когда вы нажимаете кнопку.

Обработка событий для другого мини-приложения

Добавьте следующую строку кода в процедуру Button1_Click непосредственно перед строкой, которая считывает mWidget.LongTask(12.2, 0.33) :

Приведенный выше код создает новый Widget код при каждом нажатии кнопки. Как только LongTask метод завершится, ссылка на Widget нее освобождается и Widget уничтожается.

Переменная WithEvents может содержать только одну ссылку на объект за раз, поэтому при назначении другого Widget объекта mWidget события предыдущего Widget объекта больше не будут обрабатываться. Если mWidget это единственная объектная переменная, содержащая ссылку на старую Widget , объект уничтожается. Если вы хотите обрабатывать события из нескольких Widget объектов, используйте инструкцию AddHandler для обработки событий из каждого объекта отдельно.

Можно объявить любое количество WithEvents переменных, но массивы WithEvents переменных не поддерживаются.

Читайте также: