Именуване на подзаписи и функции на Excel VBA

Подобно на хората, домашните любимци и ураганите, всяка процедура за под и функция на Excel VBA трябва да има име. Въпреки че е напълно приемливо да кръстите кучето си Hairball Harris, обикновено не е добра идея да използвате такова свободно отношение, когато назовавате Excl VBA процедури. Когато наименувате процедурите на Excel VBA, трябва да следвате няколко правила:

  • Можете да използвате букви, цифри и някои препинателни знаци, но първият знак трябва да е буква.
  • Не можете да използвате никакви интервали или точки в името.
  • VBA не прави разлика между главни и малки букви.
  • Не можете да използвате нито един от следните знаци в името на процедурата: #, $, %, &, @, ^, * или !. С други думи, името на вашата процедура не може да изглежда като проклятия от комикс.
  • Ако пишете функция на процедура за използване във формула, избягвайте да използвате име, което изглежда като адрес на клетка (например A1 или B52). Всъщност Excel позволява такива имена на функции, но защо да правим нещата по-объркващи, отколкото вече са?
  • Имената на процедурите не могат да бъдат по-дълги от 255 знака. (Разбира се, никога не бихте направили името на процедурата толкова дълго.)

В идеалния случай името на процедурата описва целта на рутината. Добра практика е да създадете име чрез комбиниране на глагол и съществително – например ProcessData, PrintReport, Sort_Array или CheckFilename.

Някои програмисти предпочитат да използват имена, подобни на изречения, които предоставят пълно описание на процедурата. Някои примери включват WriteReportToTextFile и Get_Print_Options_and_Print_Report. Използването на толкова дълги имена има плюсове и минуси. От една страна, такива имена са описателни и обикновено недвусмислени. От друга страна им отнема повече време за писане. Всеки развива стил на именуване, но ако вашият макрос не е просто бърз и мръсен временен макрос, добре е да бъдете описателни и да избягвате безсмислени имена като DoIt, Update, Fix и все по-популярния Macro1.

Изпълнение на подпроцедури на Excel VBA

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

Между другото, изпълнението на подпроцедура означава същото нещо като стартирането или извикването на подпроцедура. Можете да използвате каквато пожелаете терминология.

Можете да изпълните VBA Sub по много начини; това е една от причините да правите толкова много полезни неща с подпроцедурите. Ето изчерпателен списък с начините за изпълнение на подпроцедура:

  • Изберете Run → Run Sub/UserForm (във VBE). Excel изпълнява процедурата Sub, в която се намира курсорът. Тази команда от менюто има две алтернативи: клавиша F5 и бутона Run Sub/UserForm в стандартната лента с инструменти във VBE. Тези методи не работят, ако процедурата изисква един или повече аргументи.
  • Използвайте диалоговия прозорец Macro на Excel. Отваряте това поле, като изберете Разработчик → Код → Макроси или като изберете Изглед → Макроси → Макроси. Или заобиколете лентата и просто натиснете Alt+F8. Когато се появи диалоговият прозорец Макрос, изберете подпроцедурата, която искате, и щракнете върху Изпълни. Този диалогов прозорец изброява само процедурите, които не изискват аргумент.
  • Натиснете Ctrl+клавиш (или Ctrl+Shift+клавиш), присвоен на подпроцедурата (ако приемем, че сте задали такава).
  • Щракнете върху бутон или фигура в работен лист. Бутонът или фигурата трябва да имат присвоена подпроцедура – ​​което е много лесно за изпълнение.
  • От друга подпроцедура, която пишете.
  • Щракнете върху бутон, който сте добавили към лентата с инструменти за бърз достъп.
  • От персонализиран елемент, който сте добавили към лентата.
  • Когато настъпи събитие. Тези събития включват отваряне на работната книга, затваряне на работната книга, запазване на работната книга, извършване на промяна в клетка, активиране на лист и други неща.
  • От прозореца Immediate във VBE. Просто въведете името на подпроцедурата и натиснете Enter.

Някои от тези техники са разгледани по-долу. За да следвате, трябва да въведете подпроцедура в VBA модул:

Започнете с нова работна книга.

Натиснете Alt+F11, за да активирате VBE.

Изберете работната книга в прозореца на проекта.

Изберете Вмъкване → Модул, за да вмъкнете нов модул.

Въведете следното в модула:

Sub ShowCubeRoot()
  Num = InputBox("Въведете положително число")
  MsgBox Num ^ (1/3) & " е коренът на куба."
Край под

Тази процедура изисква от потребителя номер и след това показва кубичния корен на това число в полето за съобщение. Тези изображения показват какво се случва, когато изпълните тази процедура.

Именуване на подзаписи и функции на Excel VBA

Използване на вградената функция VBA InputBox за получаване на число.

Вие също какво се случва чрез функцията MsgBox тук.

Именуване на подзаписи и функции на Excel VBA

Показване на кубичния корен на число чрез функцията MsgBox.

Между другото, ShowCubeRoot не е пример за добър макрос. Той не проверява за грешки, така че лесно се проваля. Опитайте да щракнете върху бутона Отказ в полето за въвеждане или да въведете отрицателно число. Всяко действие води до съобщение за грешка.

Директно изпълнение на подпроцедурата на Excel VBA

Един от начините да изпълните тази процедура е като го направите директно от VBA модула, в който сте го дефинирали. Следвай тези стъпки:

Активирайте VBE и изберете VBA модула, който съдържа процедурата.

Преместете курсора навсякъде в кода на процедурата.

Натиснете F5 (или изберете Run → Run Sub/UserForm).

Отговорете на полето за въвеждане и щракнете върху OK.

Процедурата показва кубичния корен на въведеното от вас число.

Не можете да използвате Run → Run Sub/UserForm, за да изпълните Sub процедура, която използва аргументи, защото нямате начин да предадете аргументите на процедурата. Ако процедурата съдържа един или повече аргументи, единственият начин да я изпълните е да я извикате от друга процедура, която трябва да предостави аргумента(ите).

Изпълнение на процедурата от диалоговия прозорец Macro на Excel

През повечето време изпълнявате подпроцедури от Excel, а не от VBE. Следните стъпки описват как да изпълните макрос с помощта на диалоговия прозорец Macro на Excel:

Ако работите във VBE, активирайте Excel.
Натискането на Alt+F11 е експресният маршрут.

Изберете Разработчик → Код → Макроси (или натиснете Alt+F8).
Excel показва диалоговия прозорец, показан тук.Именуване на подзаписи и функции на Excel VBA

Диалоговият прозорец Макрос изброява всички налични подпроцедури.

Изберете макроса.

Щракнете върху Изпълни (или щракнете двукратно върху името на макроса в списъчното поле).

Диалоговият прозорец Макрос не показва подпроцедури, които използват аргументи. Това е така, защото няма начин да посочите аргументите.

Изпълнение на макрос на Excel VBA с помощта на клавиш за бърз достъп

Друг начин за изпълнение на макрос е да натиснете клавиша за бърз достъп. Но преди да можете да използвате този метод, трябва да зададете клавиш за бърз достъп на макроса.

Имате възможност да зададете клавиш за бърз достъп в диалоговия прозорец Запис на макрос, когато започнете да записвате макрос . Ако създадете процедурата без да използвате записващото устройство за макроси, можете да зададете клавиш за бърз достъп (или да промените съществуващ клавиш за бърз достъп), като използвате следните стъпки:

Изберете Разработчик → Код → Макроси.

Изберете името на подпроцедурата от списъчното поле.

В този пример процедурата е наречена ShowCubeRoot.

Щракнете върху бутона Опции.
Excel показва диалоговия прозорец Опции за макроси, показан тук.Именуване на подзаписи и функции на Excel VBA

Диалоговият прозорец Опции за макроси ви позволява да зададете опции за вашите макроси.

Щракнете върху опцията Клавиш за бърз достъп и въведете буква в полето с надпис Ctrl.

Буквата, която въвеждате, съответства на клавишната комбинация, която искате да използвате за изпълнение на макроса. Например, ако въведете малката буква c, можете да изпълните макроса, като натиснете Ctrl+C. Ако въведете главна буква, трябва да добавите клавиша Shift към клавишната комбинация. Например, ако въведете C, можете да изпълните макроса, като натиснете Ctrl+Shift+C.

Щракнете върху OK, за да затворите диалоговия прозорец Опции на макроса и след това щракнете върху Отказ, за ​​да затворите диалоговия прозорец на макроса.
След като сте задали клавиш за бърз достъп, можете да натиснете тази клавишна комбинация, за да изпълните макроса. Клавишът за бърз достъп не работи, ако е присвоен на макрос, който използва аргумент.

Клавишите за бърз достъп, които присвоявате на макроси, заменят вградените клавишни комбинации на Excel. Например, Ctrl+C е стандартният клавиш за бърз достъп за копиране на данни. Ако присвоите Ctrl+C на макрос, не можете да използвате Ctrl+C за копиране. Това обикновено не е голяма работа, защото Excel почти винаги предоставя други начини за изпълнение на команди.

Изпълнение на процедурата на Excel VBA от бутон или фигура

Понякога може да ви хареса идеята да присвоите макроса на бутон (или всяка друга форма) на работен лист. За да присвоите макроса на Excel на бутон, изпълнете следните стъпки:

Активирайте работен лист.

Добавете бутон от групата Контроли на формуляра.
За да покажете групата Контроли на формуляра, изберете Разработчик → Контроли → Вмъкване.Именуване на подзаписи и функции на Excel VBA

Лентата, показваща наличните контроли, когато щракнете върху Вмъкване в раздела Разработчик.

Щракнете върху инструмента Бутон в групата Контроли на формуляра.

Това е първият бутон в първия ред контроли.

Плъзнете работния лист, за да създадете бутона.
След като добавите бутона към вашия работен лист, Excel чете мислите ви и показва диалоговия прозорец Задаване на макрос, показан по-долу.Именуване на подзаписи и функции на Excel VBA

Когато добавите бутон към работен лист, Excel автоматично показва диалоговия прозорец Задаване на макрос.

Изберете макроса, който искате да зададете на бутона.

Щракнете върху OK.

След като сте направили заданието, щракването върху бутона изпълнява макроса — точно като магия.

Когато добавяте бутон, имайте предвид, че падащото поле показва два набора от контроли: Контроли за формуляри и ActiveX контроли. Тези две групи контроли изглеждат сходни, но всъщност са много различни. На практика контролите на формуляра са по-лесни за използване.

Можете също да зададете макрос на всяка друга форма или обект. Например, приемете, че искате да изпълните макрос, когато потребителят щракне върху правоъгълен обект. Следвай тези стъпки:

Добавете правоъгълника към работния лист.

Вмъкнете правоъгълник, като изберете Вмъкване → Илюстрации → Фигури.

Щракнете с десния бутон върху правоъгълника.

Изберете Присвояване на макрос от контекстното му меню.

Изберете макроса в диалоговия прозорец Задаване на макрос.

Щракнете върху OK.
След като изпълните тези стъпки, щракването върху правоъгълника изпълнява присвоения макрос.

Изпълнение на процедурата от друга Excel VBA процедура

Можете също да изпълните процедура на Excel VBA от друга процедура. Следвайте тези стъпки, ако искате да опитате това:

Активирайте VBA модула, който държи рутината ShowCubeRoot.

Въведете тази нова процедура (над или под кода на ShowCubeRoot - няма разлика):

Sub NewSub()
  Обадете се на ShowCubeRoot
Край под

След като приключите, просто изпълнявате макроса NewSub.

Най-лесният начин да направите това е да преместите курсора навсякъде в кода на NewSub и да натиснете F5. Забележете, че тази процедура NewSub просто изпълнява процедурата ShowCubeRoot.

Между другото, ключовата дума Call не е задължителна. Инструкцията може да се състои само от името на подпроцедурата. Въпреки това, използването на ключовата дума Call прави напълно ясно, че се извиква процедура.

Изпълнение на процедури за функция на Excel VBA

Функциите, за разлика от подпроцедурите, могат да се изпълняват само по два начина:

  • Чрез извикване на функцията от друга процедура под или функция
  • Чрез използване на функцията във формула на работен лист

Опитайте тази проста функция. Въведете го във VBA модул:

Функция CubeRoot(число)
  CubeRoot = число ^ (1/3)
Крайна функция

Тази функция е доста слаба; той просто изчислява кубичния корен на числото, предадено му като негов аргумент. Това обаче осигурява отправна точка за разбиране на функциите. Той също така илюстрира важна концепция за функциите: как да върнете стойността. (Спомняте си, че функцията връща стойност, нали?)

Забележете, че единственият ред код, който съставя тази функция на процедурата, извършва изчисление. Резултатът от математиката (число на степен 1⁄3) се присвоява на променливата CubeRoot. Неслучайно CubeRoot е и името на функцията. За да кажете на функцията каква стойност да върне, присвоявате тази стойност на името на функцията.

Извикване на функцията Excel VBA от подпроцедура

Тъй като не можете да изпълните функция директно, трябва да я извикате от друга процедура. Въведете следната проста процедура в същия VBA модул, който съдържа функцията CubeRoot:

Sub CallerSub()
  Отговор = CubeRoot(125)
  MsgBox Ans
Край под

Когато изпълните процедурата CallerSub, Excel показва поле за съобщение, което съдържа стойността на променливата Ans, която е 5.

Ето какво се случва: Функцията CubeRoot се изпълнява и получава аргумент 125. Изчислението се извършва от кода на функцията (използвайки стойността, подадена като аргумент), а върнатата стойност на функцията се присвоява на променливата Ans. След това функцията MsgBox показва стойността на променливата Ans.

Опитайте да промените аргумента, който е предаден на функцията CubeRoot и стартирайте отново макроса CallerSub. Работи точно както трябва - ако приемем, че давате на функцията валиден аргумент (положително число).

Между другото, процедурата CallerSub може да бъде малко опростена. Променливата Ans всъщност не е задължителна, освен ако вашият код не използва тази променлива по-късно. Можете да използвате това единично изявление, за да получите същия резултат:

MsgBox CubeRoot(125)

Извикване на функция на Excel VBA от формула на работен лист

Сега е време да извикате тази процедура на VBA функция от формула на работен лист. Активирайте работен лист в същата работна книга, която съдържа дефиницията на функцията CubeRoot. След това въведете следната формула във всяка клетка:

=Куб корен(1728)

Клетката показва 12, което наистина е кубичният корен от 1728.

Както може да очаквате, можете да използвате препратка към клетка като аргумент за функцията CubeRoot. Например, ако клетка A1 съдържа стойност, можете да въведете =CubeRoot(A1) . В този случай функцията връща числото, получено чрез изчисляване на кубичния корен на стойността в A1.

Можете да използвате тази функция произволен брой пъти в работния лист. Подобно на вградените функции на Excel, вашите персонализирани функции се появяват в диалоговия прозорец Вмъкване на функция. Щракнете върху бутона Вмъкване на функция в лентата с инструменти и изберете категорията Дефинирани от потребителя. Както е показано по-долу, диалоговият прозорец Вмъкване на функция изброява вашата собствена функция.

Именуване на подзаписи и функции на Excel VBA

Функцията CubeRoot се появява в категорията User Defined на диалоговия прозорец Insert Function.

Ако искате диалоговият прозорец Вмъкване на функция да показва описание на функцията, изпълнете следните стъпки:

Изберете Разработчик → Код → Макроси.
Excel показва диалоговия прозорец Macro, но CubeRoot не се появява в списъка. (CubeRoot е функционална процедура и този списък показва само подпроцедури.) Не се притеснявайте.

Въведете думата CubeRoot в полето Име на макроса.

Щракнете върху бутона Опции.

Въведете описание на функцията в полето Описание.

Щракнете върху OK, за да затворите диалоговия прозорец Опции на макроса.

Затворете диалоговия прозорец Макрос, като щракнете върху бутона Отказ.
Този описателен текст сега се появява в диалоговия прозорец Вмъкване на функция.

Това изображение показва функцията CubeRoot, която се използва във формулите на работния лист.

Именуване на подзаписи и функции на Excel VBA

Използване на функцията CubeRoot във формули.

Досега нещата може да започнат да се събират за вас.


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате грешки при отпечатването на неправилни документи на Microsoft Word Грешките при отпечатването на документи на Word с променени шрифтове, разхвърляни абзаци, липсващ текст или изгубено съдържание са доста чести. Въпреки това недейте

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

Не затрупвайте аудиторията си с огромни числа. В Microsoft Excel можете да подобрите четливостта на вашите табла за управление и отчети, като форматирате числата си така, че да се показват в хиляди или милиони.

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

Научете как да използвате инструменти за социални мрежи на SharePoint, които позволяват на индивиди и групи да общуват, да си сътрудничат, споделят и да се свързват.

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

Юлианските дати често се използват в производствени среди като времеви печат и бърза справка за партиден номер. Този тип кодиране на дата позволява на търговците на дребно, потребителите и обслужващите агенти да идентифицират кога е произведен продуктът и по този начин възрастта на продукта. Юлианските дати се използват и в програмирането, военните и астрономията. Различно […]

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]