Най-доброто ръководство за VBA (за начинаещи), от което някога ще имате нужда

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

Това ръководство за VBA за начинаещи ще ви покаже как да добавите менюто за програмисти към вашето приложение на (Developer)Office , как да влезете в прозореца на редактора на VBA и как работят основните VBA изрази и цикли, така че да можете да започнете да използвате VBA в Excel , Word , Powerpoint , Outlook и OneNote .

Това ръководство за VBA използва най-новата версия на продуктите на (VBA)Microsoft Office . Ако имате по-ранна версия, може да видите някои леки разлики от екранните снимки.

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

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

Ще научите как да направите това в нашето предстоящо ръководство за разширени VBA .(Advanced VBA)

  • За да активирате менюто за програмисти(Developer) във всеки офис продукт, изберете менюто Файл(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 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 код първо ще има този ред.

Dim rng As Range, cell As Range
Dim rowCounter като цяло число(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 while цикли(VBA While Loops)

Докато цикълът също преминава през поредица от оператори, точно като цикъла (Loop)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)

Примките Do While и Do Until са почти идентични с циклите 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

Аз съм компютърен инженер с над 10 години опит в софтуерната индустрия, по-специално в Microsoft Office. Написал съм статии и уроци по различни теми, свързани с Office, включително съвети как да използвам функциите му по-ефективно, трикове за овладяване на обичайните офис задачи и др. Моите умения като писател също ме правят отличен ресурс за други, които искат да научат за Office или просто се нуждаят от бърз съвет.



Related posts