Призначення підпорядкувань і функцій Excel VBA

Як і люди, домашні тварини та урагани, кожна процедура суб та функції Excel VBA повинна мати назву. Хоча цілком прийнятно назвати свою собаку Hairball Harris, зазвичай не варто використовувати таке вільне ставлення, коли називати процедури Excl VBA. При іменуванні процедур Excel VBA необхідно дотримуватися кількох правил:

  • Ви можете використовувати літери, цифри та деякі знаки пунктуації, але першим символом має бути буква.
  • У назві не можна використовувати пробіли чи крапки.
  • VBA не розрізняє великі та малі літери.
  • У назві процедури не можна використовувати будь-який з наступних символів: #, $, %, &, @, ^, * або !. Іншими словами, назва вашої процедури не може виглядати як прокляття в коміксах.
  • Якщо ви пишете процедуру Function для використання у формулі, уникайте використання імені, яке виглядає як адреса комірки (наприклад, A1 або B52). Насправді, Excel допускає такі імена функцій, але навіщо робити речі більш заплутаними, ніж вони є?
  • Довжина назви процедур не може перевищувати 255 символів. (Звичайно, ви ніколи б не зробили таку довгу назву процедури.)

В ідеалі назва процедури описує мету процедури. Хорошою практикою є створення імені шляхом поєднання дієслова та іменника, наприклад, ProcessData, PrintReport, Sort_Array або CheckFilename.

Деякі програмісти вважають за краще використовувати імена, схожі на речення, які надають повний опис процедури. Деякі приклади включають WriteReportToTextFile і Get_Print_Options_and_Print_Report. Використання таких довгих імен має як плюси, так і мінуси. З одного боку, такі назви є описовими і зазвичай однозначними. З іншого боку, для їх друку потрібно більше часу. Кожен розробляє свій стиль іменування, але якщо ваш макрос — це не просто тимчасовий макрос, який швидко й бруднить, варто бути описовим і уникати безглуздих імен, таких як DoIt, Update, Fix та завжди популярний Macro1.

Виконання підпроцедур Excel VBA

Хоча ви, можливо, не знаєте багато про розробку процедур Sub на даному етапі, важливо знати, як виконувати ці процедури. Процедура Sub є марною, якщо ви не знаєте, як її виконати.

До речі, виконання процедури Sub означає те саме, що запуск або виклик процедури Sub. Ви можете використовувати будь-яку термінологію, яка вам подобається.

Ви можете виконати VBA Sub кількома способами; це одна з причин, чому ви можете зробити так багато корисних речей за допомогою процедур Sub. Ось вичерпний список способів виконання підпроцедури:

  • Виберіть «Виконати» → «Виконати підпорядковану форму/форму користувача» (у VBE). Excel виконує процедуру Sub, в якій розташований курсор. Ця команда меню має дві альтернативи: клавішу F5 і кнопку «Виконати підпорядковану форму/форму користувача» на стандартній панелі інструментів у VBE. Ці методи не працюють, якщо процедура вимагає одного або кількох аргументів.
  • Використовуйте діалогове вікно Macro Excel. Ви відкриваєте це поле, вибравши Розробник → Код → Макроси або вибравши Перегляд → Макроси → Макроси. Або обходьте стрічку і просто натисніть Alt+F8. Коли з’явиться діалогове вікно «Макро», виберіть потрібну підпроцедуру та натисніть «Виконати». У цьому діалоговому вікні перелічено лише процедури, які не потребують аргументу.
  • Натисніть Ctrl+клавіша (або Ctrl+Shift+клавіша), призначену підпроцедурі (якщо ви її призначили).
  • Натисніть кнопку або фігуру на робочому аркуші. Кнопці або фігурі повинна бути призначена підпроцедура, що дуже легко зробити.
  • З іншої підпроцедури, яку ви пишете.
  • Натисніть кнопку, яку ви додали на панель швидкого доступу.
  • З користувацького елемента, який ви додали на стрічку.
  • Коли відбувається подія. Ці події включають відкриття книги, закриття книги, збереження книги, внесення змін до комірки, активацію аркуша та інші речі.
  • З вікна "Негайне" у VBE. Просто введіть назву підпроцедури та натисніть Enter.

Деякі з цих методів розглянуті нижче. Щоб продовжити, вам потрібно ввести процедуру Sub в модуль VBA:

Почніть з нової робочої книги.

Натисніть Alt+F11, щоб активувати VBE.

Виберіть книгу у вікні Проект.

Виберіть Вставити → Модуль, щоб вставити новий модуль.

Введіть наступне в модуль:

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

Ця процедура запитує у користувача число, а потім відображає його кубічний корінь у вікні повідомлення. Ці зображення показують, що відбувається, коли ви виконуєте цю процедуру.

Призначення підпорядкувань і функцій Excel VBA

Використання вбудованої функції InputBox VBA для отримання числа.

Ви також, що відбувається за допомогою функції MsgBox тут.

Призначення підпорядкувань і функцій Excel VBA

Відображення кубічного кореня числа за допомогою функції MsgBox.

До речі, ShowCubeRoot не є прикладом хорошого макросу. Він не перевіряє помилки, тому легко виходить з ладу. Спробуйте натиснути кнопку «Скасувати» у полі введення або ввести від’ємне число. Будь-яка дія призводить до повідомлення про помилку.

Безпосереднє виконання підпроцедури Excel VBA

Один із способів виконати цю процедуру — це зробити це безпосередньо з модуля VBA, у якому ви її визначили. Виконайте такі дії:

Активуйте VBE та виберіть модуль VBA, який містить процедуру.

Перемістіть курсор в будь-яке місце в коді процедури.

Натисніть F5 (або виберіть «Виконати» → «Виконати допоміжну форму/форму користувача»).

Дайте відповідь на поле введення та натисніть OK.

Процедура відображає кубічний корінь введеного вами числа.

Ви не можете використовувати Run → Run Sub/UserForm для виконання процедури Sub, яка використовує аргументи, оскільки у вас немає можливості передати аргументи процедурі. Якщо процедура містить один або кілька аргументів, єдиний спосіб її виконання - це викликати її з іншої процедури, яка має надати аргумент(и).

Виконання процедури з діалогового вікна Macro Excel

У більшості випадків ви виконуєте підпроцедури з Excel, а не з VBE. Наступні кроки описують, як виконати макрос за допомогою діалогового вікна макросів 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 необов'язкове. Оператор може складатися лише з імені процедури Sub. Однак використання ключового слова Call робить абсолютно зрозумілим, що процедура викликається.

Виконання процедур функції Excel VBA

Функції, на відміну від процедур Sub, можуть виконуватися лише двома способами:

  • Викликаючи функцію з іншої процедури Sub або Function
  • Використовуючи функцію у формулі робочого аркуша

Спробуйте цю просту функцію. Введіть його в модуль VBA:

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

Ця функція доволі негарна; він просто обчислює кубічний корінь з числа, переданого йому як аргумент. Однак це є відправною точкою для розуміння функцій. Він також ілюструє важливу концепцію функцій: як повернути значення. (Ви пам’ятаєте, що функція повертає значення, чи не так?)

Зверніть увагу, що єдиний рядок коду, який складає цю процедуру Function, виконує обчислення. Результат математики (число в степені 1⁄3) присвоюється змінній CubeRoot. Не випадково CubeRoot також є назвою функції. Щоб вказати функції, яке значення повертати, ви призначаєте це значення назві функції.

Виклик функції Excel VBA з підпроцедури

Оскільки ви не можете виконати функцію безпосередньо, ви повинні викликати її з іншої процедури. Введіть таку просту процедуру в тому самому модулі VBA, який містить функцію CubeRoot:

Sub CallerSub()
  Відповідь = кубовий корінь (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 з’являється в категорії «Визначено користувачем» діалогового вікна «Вставка функції».

Якщо ви хочете, щоб у діалоговому вікні «Вставка функції» відображався опис функції, виконайте такі дії:

Виберіть Розробник → Код → Макроси.
Excel відображає діалогове вікно макросу, але CubeRoot не відображається у списку. (CubeRoot є процедурою функції, і цей список показує лише підпроцедури.) Не хвилюйтеся.

Введіть слово CubeRoot у полі Ім’я макросу.

Натисніть кнопку Параметри.

Введіть опис функції в поле Опис.

Натисніть OK, щоб закрити діалогове вікно Параметри макросу.

Закрийте діалогове вікно Макрос, натиснувши кнопку Скасувати.
Цей описовий текст тепер з’являється в діалоговому вікні «Вставка функції».

На цьому зображенні показано, як функція CubeRoot використовується у формулах робочого аркуша.

Призначення підпорядкувань і функцій Excel VBA

Використання функції CubeRoot у формулах.

Наразі, можливо, для вас все почне складатися.

Leave a Comment

Як спілкуватися в чаті в Outlook Web App

Як спілкуватися в чаті в Outlook Web App

Досліджуйте, як ефективно спілкуватися в чаті з колегами в Outlook Web App. Дізнайтеся про покрокову інструкцію та нові можливості для підвищення продуктивності.

Як заборонити 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 відображають список посилань навігації на панелі швидкого запуску ліворуч. Панель швидкого запуску відображає посилання на пропонований вміст сайту, наприклад списки, бібліотеки, сайти та сторінки публікації. Панель швидкого запуску містить два дуже важливі посилання: Посилання на весь вміст сайту: […]