Лучшее руководство по VBA (для начинающих), которое вам когда-либо понадобится

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

Это руководство по VBA для начинающих покажет вам, как добавить меню « Разработчик » в ваше приложение (Developer)Office , как войти в окно редактора VBA и как работают основные операторы и циклы (VBA)VBA , чтобы вы могли начать использовать VBA в Excel , Word , Powerpoint , Outlook и OneNote .

В этом руководстве по VBA используется последняя версия продуктов Microsoft Office . Если у вас более ранняя версия, вы можете увидеть небольшие отличия от скриншотов.

Как включить и использовать редактор VBA(How To Enable & Use The VBA Editor)

В любом из продуктов Office , используемых в этом руководстве, вы можете заметить, что у вас нет упомянутого меню разработчика . (Developer)Меню разработчика доступно только в Excel , Word , Outlook и Powerpoint . OneNote не предлагает инструмент для редактирования кода VBA внутри приложения, но вы по-прежнему можете ссылаться на OneNote API для взаимодействия с OneNote из других программ Office

Вы узнаете, как это сделать, в нашем предстоящем руководстве Advanced VBA .

  • Чтобы включить меню « Разработчик(Developer) » в любом продукте Office, выберите меню « Файл(File) » и выберите « Параметры(Options) » в меню навигации слева. 
  • Вы увидите всплывающее меню « Параметры ». (Options)Выберите « Настроить ленту»(Customize Ribbon) в меню навигации слева.

Левый список включает все доступные меню и команды меню, доступные в этом приложении Office . В списке справа перечислены те, которые в настоящее время доступны или активированы.

  • Вы должны увидеть Developer в списке справа, но он не будет активирован. Просто(Just) установите флажок, чтобы активировать меню разработчика .(Developer)

  • Если вы не видите « Разработчик(Developer) » справа, измените слева « Выбрать команды(Choose commands) » из раскрывающегося списка на « Все команды»(All Commands) . Найдите « Разработчик(Developer) » в списке и выберите « Add>> в центре, чтобы добавить это меню на ленту(Ribbon) .
  • Выберите OK , когда закончите.
  • Когда меню « Разработчик(Developer) » станет активным, вы можете вернуться в главное окно приложения и выбрать « Разработчик(Developer) » в верхнем меню. 
  • Затем выберите « Просмотр кода(View Code) » в группе « Элементы управления(Controls) » на ленте, чтобы открыть окно редактора VBA .

  • Это откроет окно редактора VBA , где вы сможете ввести код, который вы узнаете в следующих нескольких разделах.

  • Попробуйте добавить меню « Разработчик » в несколько приложений (Developer)Office , которые вы используете каждый день. Когда вы научитесь открывать окно редактора VBA , переходите к следующему разделу этого руководства.

Общие советы по программированию на VBA для начинающих(General VBA Programming Tips for Beginners)

Вы заметите, что когда откроется редактор VBA , параметры навигации на левой панели выглядят по-разному в разных приложениях Office .

Это связано с тем, что доступные объекты, в которые вы можете поместить код VBA , зависят от того, какие объекты есть в приложении. Например, в Excel вы можете добавить код VBA в книгу или объекты листа. В Word вы можете добавлять в документы код VBA . В Powerpoint только к модулям.

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

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

Где разместить код VBA(Where To Put VBA Code)

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

Например, в Excel , если вы выберете Worksheet и Activate , код будет выполняться при каждом открытии рабочего листа. 

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

Когда вы добавляете код VBA в редактор, всегда убедитесь, что ваш код VBA помещен(VBA) в объект и используется правильное действие, которое вы хотите использовать для запуска этого кода.

Операторы VBA IF(VBA IF Statements)

Оператор IF работает в VBA так же, как и в любом другом языке программирования.

Первая часть оператора IF проверяет, верно ли условие или набор условий. Эти условия могут быть объединены оператором И(AND) или ИЛИ, чтобы связать их вместе.

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

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

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

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

Использование этой техники часто может значительно упростить чтение и отладку кода.

VBA для следующих циклов(VBA For Next Loops)

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

В этом случае вам понадобится цикл  FOR .

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

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

Dim rng As Range, ячейка As Range (Dim rng As Range, cell As Range)
Dim rowCounter as Integer

Определите размер диапазона следующим образом. 

Set rng = Range(“B2:B7”)
rowCounter = 2

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

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

После запуска этого сценария VBA(VBA script) вы увидите результаты в фактической электронной таблице.

Циклы VBA "пока"(VBA While Loops)

Цикл(Loop) while также выполняет серию операторов, как и цикл FOR , но условие продолжения цикла — это условие, остающееся истинным.

Например, вы можете написать тот же цикл FOR , что и цикл (FOR)WHILE , просто используя переменную rowCounter следующим образом.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Примечание. Ограничение завершения rng.Count + 2 требуется, поскольку счетчик строк начинается с 2 и должен заканчиваться в строке 7, где заканчиваются данные. Однако счетчик диапазона (B2:B7) равен только 6, и цикл While завершится только тогда, когда счетчик станет БОЛЬШЕ(GREATER) , чем счетчик, поэтому последнее значение rowCounter должно быть равно 8 (или rng.Count + 2).

Вы также можете настроить цикл While следующим образом:

While rowCounter <= rng.Count + 1

Вы можете увеличить счетчик диапазона (6) только на 1, потому что как только переменная rowCounter достигнет конца данных (строка 7), цикл может завершиться.

Циклы VBA Do While и Do until(VBA Do While and Do Until Loops)

Циклы «До тех пор» и «До» почти идентичны циклам «Пока», но работают немного по-другому.

  • Цикл while(While Loop) проверяет, выполняется ли условие в начале цикла.
  • Цикл Do-While(Do-While Loop) проверяет, истинно ли условие после выполнения инструкций в цикле.
  • Цикл Do-Until(Do-Until Loop) проверяет, остается ли условие ложным после выполнения цикла.

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

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

В этом случае логика не сильно меняется, но если вы хотите убедиться, что логическое сравнение выполняется после выполнения всех операторов (что позволяет им всем выполняться независимо от того, что хотя бы один раз), тогда Do-While или цикл Do-Until — правильный вариант.

Операторы выбора VBA(VBA Select Case Statements)

Последний тип логического оператора, который вам нужно понять, чтобы начать структурировать свой код VBA , — это операторы Select Case .

Учитывая приведенный выше пример, предположим, что вы хотите иметь метод оценки, который не является просто непройденным. Вместо этого вы хотите присвоить буквенную оценку от A до F.

Вы можете сделать это с помощью следующего оператора Select Case :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

Полученная электронная таблица после запуска этого скрипта VBA выглядит так, как показано ниже.

Теперь вы знаете все, что нужно знать, чтобы начать использовать VBA в приложениях Microsoft Office .



About the author

«Я внештатный эксперт по Windows и Office. У меня более 10 лет опыта работы с этими инструментами, и я могу помочь вам извлечь из них максимальную пользу. Мои навыки включают в себя: работу с Microsoft Word, Excel, PowerPoint и Outlook; страницы и приложения, а также помощь клиентам в достижении их бизнес-целей».



Related posts