VBAНачало работы с VBA


замечания

В этом разделе представлен обзор того, что такое vba, и почему разработчик может захотеть его использовать.

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

Версии

Версия Офисные версии Дата выпуска Примечания Дата выхода
VBA6 ? - 2007 [Когда-то после] [1] 1992-06-30
Vba7 2010 - 2016 [Blog.techkit.com] [2] 2010-04-15
VBA для Mac 2004, 2011 - 2016 гг. 2004-05-11

Доступ к редактору Visual Basic в Microsoft Office

Вы можете открыть редактор VB в любом из приложений Microsoft Office, нажав Alt + F11 или перейдите на вкладку «Разработчик» и нажав кнопку «Visual Basic». Если вы не видите вкладку «Разработчик» в ленте, проверьте, включено ли это.

По умолчанию вкладка «Разработчик» отключена. Чтобы включить вкладку «Разработчик», перейдите в «Файл -> Параметры», выберите «Настроить ленту» в списке слева. В правой части дерева «Настроить ленту» найдите элемент «Дерево разработчика» и установите флажок «Проверить флажок разработчика». Нажмите «ОК», чтобы закрыть диалоговое окно «Параметры».

Меню параметров файлов

Вкладка «Разработчик» теперь отображается в ленте, на которой вы можете щелкнуть «Visual Basic», чтобы открыть редактор Visual Basic. В качестве альтернативы вы можете нажать «Просмотреть код», чтобы непосредственно просмотреть панель кода активного элемента, например WorkSheet, Chart, Shape.

Вкладка разработчика

VBE

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

отладка

Отладка - очень мощный способ более пристального взгляда и исправления некорректно работающего (или не работающего) кода.

Выполнить код шаг за шагом

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

  • Точка останова ( F9 , Debug - Toggle breakpoint): вы можете добавить точку останова в любую выполненную строку (например, не к объявлениям), когда выполнение достигает этой точки и останавливается и дает управление пользователю.
  • Вы также можете добавить ключевое слово Stop в пустую строку, чтобы остановить код в этом месте во время выполнения. Это полезно, если, например, перед линиями объявлений, к которым вы не можете добавить точку останова с F9
  • Шаг в ( F8 , Debug - Step in): выполняется только одна строка кода, если это вызов определенной пользователем функции / функции, то это выполняется по строкам.
  • Step over ( Shift + F8 , Debug - Step over): выполняет одну строку кода, не вводит пользовательские подмножества / функции.
  • Выйти ( Ctrl + Shift + F8 , Debug - выйти): выйти из текущего суб / функции (запустить код до конца).
  • Запустите курсор ( Ctrl + F8 , Debug - Run to cursor): запустите код, пока не дойдете до строки с помощью курсора.
  • Вы можете использовать Debug.Print для печати строк в окне Immediate во время выполнения. Вы также можете использовать Debug.? как ярлык для Debug.Print

Окно часов

Запуск кода за строкой - это только первый шаг, нам нужно знать больше деталей, и один инструмент для этого - это окно часов (View - Watch), здесь вы можете увидеть значения определенных выражений. Чтобы добавить переменную в окно просмотра, выполните следующие действия:

  • Щелкните его правой кнопкой мыши и выберите «Добавить часы».
  • Щелкните правой кнопкой мыши в окне просмотра, выберите «Добавить часы».
  • Перейдите в Debug - добавьте часы.

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

Немедленное окно

Непосредственное окно позволяет выполнять произвольный код или печатать элементы, преследуя их либо ключевым словом Print либо одним вопросительным знаком « ? ».

Некоторые примеры:

  • ? ActiveSheet.Name - возвращает имя активного листа
  • Print ActiveSheet.Name - возвращает имя активного листа
  • ? foo - возвращает значение foo *
  • x = 10 наборов x до 10 *

* Получение / установка значений для переменных через окно Immediate может выполняться только во время выполнения

Отладка лучших практик

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

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

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

Если вы все еще не можете его решить и обратитесь за помощью:

  • Включите как можно большую часть своего кода для понимания вашей проблемы
  • Если проблема не связана со значением переменных, замените их на константы. (так, вместо Sheets(a*b*c+d^2).Range(addressOfRange) написать Sheets(4).Range("A2") )
  • Опишите, какая строка дает неправильное поведение и что это (ошибка, неправильный результат ...)

Первый модуль и Hello World

Чтобы начать кодирование в первую очередь, вы должны щелкнуть правой кнопкой мыши свой проект VBA в левом списке и добавить новый модуль. Ваш первый код Hello-World может выглядеть так:

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub
 

Чтобы протестировать его, нажмите Play -Button на панели инструментов или просто нажмите клавишу F5 . Поздравляем! Вы создали свой собственный VBA-модуль.