Понякога най-добрият маршрут за въвеждане на код за Excel 2016 е най-прекият. Директното въвеждане на VBA код включва... добре, директно въвеждане на кода. С други думи, въвеждате кода с помощта на клавиатурата си. Въвеждането и редактирането на текст в VBA модул работи както бихте очаквали. Можете да избирате, копирате, изрязвате, поставяте и правите други неща с текста.
Използвайте клавиша Tab, за да направите отстъп на някои от редовете, за да направите кода си по-лесен за четене. Отстъпът не е необходим, но е добър навик за придобиване.
Един ред от VBA код може да бъде толкова дълъг, колкото е необходимо. Въпреки това, може да искате да използвате символите за продължаване на реда, за да разделите дълги редове код. За да продължите един ред код (известен също като израз) от един ред на следващия, завършете първия ред с интервал, последван от долно черта (_). След това продължете изявлението на следващия ред. И не забравяйте пространството. Подчертаване, което не е предшествано от интервал, няма да свърши работа.
Ето пример за едно изявление, разделено на три реда:
Selection.Sort Key1:=Обхват(“A1”), _
Поръчка1:=xlВъзходяща, Заглавка:=xlGuess, _
Ориентация:=xlTopToBottom
Този израз би действал точно по същия начин, ако беше въведен в един ред (без символи за продължаване на реда). Обърнете внимание, че вторият и третият ред на това изявление са с отстъп. Отстъпът не е задължителен, но помага да се изясни фактът, че тези редове не са отделни изрази.
Инженерите с бяло покритие, които проектираха VBE, очакваха, че хората ще правят грешки. Следователно VBE има множество нива на отмяна и повторение. Ако сте изтрили изявление, което не трябва да имате, щракнете върху бутона Отмяна на лентата с инструменти (или натиснете Ctrl+Z), докато изявлението се покаже отново. След като отмените, можете да използвате бутона Възстановяване, за да извършите промените, които сте отменили.
Готови ли сте да въведете някакъв реален код? Опитайте следните стъпки:
Създайте нова работна книга в Excel.
Натиснете Alt+F11, за да активирате VBE.
Щракнете върху името на новата работна книга в прозореца на проекта.
Изберете Вмъкване → Модул, за да вмъкнете VBA модул в проекта.
Въведете следния код в модула:
Sub GuessName()
Msg = "Вашето име " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Ако Ans = vbNo Тогава MsgBox „О, няма значение.“
Ако Ans = vbYes Тогава MsgBox „Трябва да съм екстрасенс!“
Край под
Позиционирайте курсора навсякъде в текста, който сте въвели, и натиснете F5, за да изпълните процедурата.
F5 е пряк път за командата Run → Run Sub/UserForm. Ако сте въвели кода правилно, Excel изпълнява процедурата и можете да отговорите на простия диалогов прозорец. Не забравяйте, че текстът в диалоговия прозорец ще бъде различен.
Процедурата GuessName показва този диалогов прозорец.
Когато въведете кода, посочен в стъпка 5, може да забележите, че VBE прави някои корекции на текста, който въвеждате. Например, след като въведете израза Sub, VBE автоматично вмъква End Sub израза. И ако пропуснете интервала преди или след знак за равенство, VBE вмъква интервала вместо вас. Също така, VBE променя цвета и главни букви на някои текст. Всичко това е напълно нормално. Това е просто начинът на VBE да поддържа нещата спретнати и четими.
Ако сте следвали предишните стъпки, току-що написахте VBA Sub процедура, известна още като макрос. Когато натиснете F5, Excel изпълнява кода и следва инструкциите. С други думи, Excel оценява всяко изявление и прави това, което сте му казали да направи. (Не позволявайте на тази новооткрита сила да ви хрумне.) Можете да изпълните този макрос произволен брой пъти — въпреки че има тенденция да губи привлекателността си след няколко десетки пъти.
За протокола този прост макрос използва следните концепции:
-
Дефиниране на подпроцедура (първи ред)
-
Присвояване на стойности на променливи (Msg и Ans)
-
Конкатениране (присъединяване) на низ (с помощта на оператора &)
-
Използване на вградена VBA функция (MsgBox)
-
Използване на вградени VBA константи (vbYesNo, vbNo и vbYes)
-
Използване на конструкция If-Then (два пъти)
-
Завършване на подпроцедура (последният ред)
Не е зле за начинаещ, а?