VBA - открытие и использование редактора Visual Basic (VBE) в Excel

Из этого туториала Вы узнаете, как открывать и программировать в редакторе Visual Basic в VBA.

Открытие редактора Visual Basic

Есть несколько способов получить доступ к редактору Visual Basic (VBE) в Excel.

Нажмите Alt + F11 на клавиатуре.

ИЛИ

Нажмите Просмотр> Макросы> Просмотр макросов. Отсюда вы можете Редактировать существующий макрос или Создавать новенький. Любой вариант открывает редактор VB.

ИЛИ

Разработчик> Visual Basic

Примечание. Если вы не видите ленты разработчика, вам необходимо включить ее.

Включение ленты разработчика

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

Нажмите Ok.

Вкладка «Разработчик» появится на главной ленте. Щелкните Visual Basic в начале ленты, чтобы открыть редактор Visual Basic.

Понимание экрана VBE

Экран VBE показан на рисунке ниже.

Обозреватель проекта

Project Explorer позволяет вам увидеть, как организован проект, в котором вы работаете. Вы можете видеть, сколько модулей и форм хранится в проекте, и можете перемещаться между этими модулями и формами. Модуль - это место, где хранится код в вашей книге, когда вы записываете макрос, он будет сохранен в стандартном модуле, который по умолчанию будет называться ‘Module1 ’.

Каждый рабочий лист в вашем файле Excel также имеет модуль позади него, как и сама книга. Когда вы вставляете новый лист в книгу через главный экран Excel, вы увидите, что в Project Explorer появляется дополнительный модуль листа.

Дважды щелкните модуль, чтобы перейти к коду этого модуля.

Вы также можете щелкнуть меню «Окно» на панели инструментов и выбрать там модуль, чтобы перейти к коду этого модуля.

Тип модулей

Модули разделены на 5 различных типов.

  1. Стандартные модули - большая часть вашего кода войдет в этот тип модуля. Когда вы записываете макрос, он помещается в стандартный модуль. Когда вы пишете общую процедуру, которая будет использоваться в вашей книге, она также обычно входит в стандартный модуль.
  2. Модули рабочей тетради - этот модуль содержит код, уникальный для этой отдельной книги. Большая часть кода в модулях этого типа известна как СОБЫТИЯ. Событие может произойти, например, при открытии или закрытии книги. Модуль также может содержать код, написанный вами и используемый событиями.
  3. Модули листов - этот модуль содержит код, уникальный для этого отдельного листа. Они могут возникнуть, например, при щелчке по листу ( Нажмите Событие) или при изменении данных в ячейке. Этот модуль также может содержать код, написанный вами и вызываемый событиями.
  4. Модули формы - это модуль за настраиваемой формой, которую вы можете создать. Например, вы можете создать форму для хранения деталей для счета-фактуры с кнопкой OK, код за кнопкой (событие Click) содержит код, который будет запускаться при нажатии кнопки.
  5. Модули класса - этот модуль используется для создания объектов во время выполнения. Модуль класса используется продвинутыми программистами VBA и будет рассмотрен позже.

Вставка модуля или формы в ваш код

Чтобы вставить новый модуль в свой код, щелкните значок Вставлять в строке меню и щелкните Модуль.

Или нажмите на Вставить модуль кнопку, которую вы найдете на стандартной ленте.

Чтобы вставить новую пользовательскую форму в свой код, выберите UserForm вариант.

Новая форма пользователя появится в Обозреватель проекта и будет отображаться в окне кода справа.

Вы также можете вставить Модуль класса

Модуль класса используется для вставки объектов в ваш проект VBA.

Удаление модуля или формы из проводника проекта

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

Нажмите Удалять (в этом случае UserForm1… )

ИЛИ

Нажать на Файл меню, а затем нажмите Удалите (UserForm1).

Появится окно с предупреждением, в котором вас спросят, хотите ли вы экспортировать форму или модуль, прежде чем удалить его. Экспорт формы или модуля позволяет сохранить его как отдельный файл для использования в другом проекте Excel в другое время.

Чаще всего, когда вы удаляете модуль или форму, это происходит потому, что он вам не нужен, поэтому нажмите Нет.

Окно свойств

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

Нажмите F4 или щелкните Вид, Окно свойств.

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

Когда вы записываете макрос, он автоматически помещается в стандартный модуль. Модуль будет называться ‘Module1 ’ и любой код, содержащийся в этом модуле, доступен для использования в вашем проекте. Вам следует переименовать свой модуль во что-то важное, что упростило бы поиск вашего кода, если бы вы добавили в проект несколько модулей.

Вы также можете переименовать свои формы.

Если вы переименовали свой лист в Excel, имя листа будет отображаться как имя листа в скобках после Sheet1.

Если вы хотите изменить имя модуля за листом, вы можете изменить его так же, как вы меняете модуль и имя пользовательской формы - изменив свойство Name в окне свойств.

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Окно кода

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

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

В приведенном выше примере мы не работаем ни с одним объектом - таким образом, это общее значение, но мы работаем в рамках процедуры Gridlines.

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

Понимание Кодекса

Есть 2 типа процедур - Подпроцедуры а также Функциональные процедуры.

Подпроцедуры

Регистратор макросов может записывать только подпроцедуры. Процедура Sub делает что-то. Они выполняют такие действия, как форматирование таблицы или создание сводной таблицы, или, в примере линии сетки, изменение параметров просмотра вашего активного окна. Большинство написанных процедур являются подпроцедурами. Все макросы являются подпроцедурами.

Подпроцедура начинается с Sub заявление и заканчивается Конец подписки утверждение. За именем процедуры всегда ставятся круглые скобки.

123 Sub HideGridLines ()ActiveWindow.DisplayGridlines = FalseКонец подписки

Функциональные процедуры

Функциональная процедура возвращает значение. Это значение может быть одним значением, массивом, диапазоном ячеек или объектом. Функции обычно выполняют какой-либо вид вычислений. Функции в Excel можно использовать с мастером функций или вызывать из подпроцедур.

123 Функциональные килограммы (фунты как удвоенные)Килограмм = (фунтов / 2,2)Конечная функция

Эту функцию можно использовать в диалоговом окне «Вставить функцию» в Excel для преобразования фунтов в килограммы.

Создание новой процедуры

Прежде чем создавать новую процедуру, убедитесь, что вы находитесь в модуле, в котором хотите сохранить процедуру. Вы можете создать новую процедуру, щелкнув меню «Вставка», «Процедура»;

или вы можете щелкнуть значок на панели инструментов

Появится следующее диалоговое окно

  1. Введите имя вашей новой процедуры в поле имени - оно должно начинаться с буквы алфавита и может содержать буквы и цифры и содержать не более 64 символов.
  2. Вы можете иметь Подпроцедура, а Функциональная процедура или Имущество процедура. (Свойства используются в модулях классов и задают свойства для элементов управления ActiveX, которые вы, возможно, создали).
  3. Вы можете сделать объем процедуры либо Общественные или Частный. Если процедура является общедоступной (по умолчанию), она может использоваться всеми модулями в проекте, а если процедура является частной, ее сможет использовать только этот модуль.
  4. Вы можете объявить локальные переменные в этой процедуре как статические (это связано с областью действия переменной и делает переменную уровня локальной процедуры общедоступной для всего модуля). Мы не будем использовать этот вариант.

Когда вы заполнили все необходимые данные, нажмите Ok.

Затем вы вводите свой код между операторами Sub и End Sub.

АЛЬТЕРНАТИВНО - вы можете ввести операторы Sub и End Sub в свой модуль точно так, как показано выше. Вам не нужно ставить слово Public перед словом sub - если это слово опущено, все процедуры в модуле автоматически считаются общедоступными.

Затем вы вводите Sub а затем имя вашей процедуры, за которым следует скобка.

то есть:

1 Подтест ()

В Конец подписки выписка появится автоматически.

Программирование на VBA | Генератор кода действительно работает для вас!

Написание кода, который легко понять и ориентироваться

Добавление комментариев

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

Вы можете вставить комментарий в свой код, набрав апостроф на клавиатуре, или вы можете включить панель инструментов «Редактировать» и использовать кнопку комментария, которая появляется на этой панели инструментов.

Щелкните правой кнопкой мыши панели инструментов.

Выбирать Редактировать.

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

ПРИМЕЧАНИЕ: Обычно вы используете кнопку блока комментариев только тогда, когда у вас есть несколько строк кода, которые вы хотите закомментировать (а не удалить). Для одного комментария проще использовать апостроф.

Отступ

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

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

Верхний регистр против нижнего регистра

VBA настраивает весь код на правильный регистр, поэтому, если вы наберете ВСЕ В ПРОПИСНЫХ или все в нижнем регистре, он изменит ваш код, чтобы он был в правильном регистре!

Программирование на VBA | Генератор кода действительно работает для вас!

Автозаполнение

Когда вы настроите свой код, вы заметите, что VBA пытается помочь вам, предлагая код, который вы можете ввести. Это называется автозаполнением.

Перехват ошибок и отладка

Существует 4 типа ошибок, которые могут возникнуть при написании кода VBA: синтаксические ошибки, ошибки компиляции, ошибки времени выполнения и логические ошибки.

Синтаксические ошибки

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

Если вы введете код неправильно (например, исключите то, что должно быть в коде), во время написания кода появится окно сообщения, дающее вам возможность изменить код.

Ошибки компиляции

Это происходит, когда в коде чего-то не хватает, что мешает запуску кода. Ошибка возникает не при написании кода, а при попытке запустить код.

Программирование на VBA | Генератор кода действительно работает для вас!

Ошибки времени выполнения

Это происходит, когда вы запускаете код, а синтаксис и компиляция верны, но происходит что-то еще, что препятствует правильной работе кода.

В этом случае Sheet4 не существует. Это сообщение об ошибке более полезно, чем сообщения об ошибках компиляции, поскольку оно дает вам возможность отладить код и увидеть, почему он не работает.

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

Измените Sheet4 на Sheet2 (поскольку Лист 2 существует, а Лист 4 не существует).

Нажмите F5 или нажмите на Продолжать кнопку на панели инструментов.

Логические ошибки

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

Есть 2 типа ловушек ошибок

При ошибке перейти к

Следующий код предназначен для открытия диалогового окна открытия файла - он выдаст нам ошибку, если пользователь щелкнет Отмена.

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

Когда вы затем нажмете «Отмена», произойдет ошибка.

Следующая ловушка ошибок продолжит код до функции выхода кода и вернет сообщение.

Это использует On Error GoTo для выхода из функции.

Когда вы запустите код и нажмете «Отмена», появится окно сообщения.

При ошибке Возобновить Далее

Если поставить При ошибке Возобновить Далее Заявление в ваш код, строка, содержащая ошибку, будет проигнорирована, и код будет продолжен.

Например, если пользователь нажимает кнопку «Отмена» в приведенном ниже коде, код не выдаст ошибку во время выполнения, он просто завершится, а код ничего не сделает.

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

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave