Як написати функцію на VBA Access 2003

продовжуємо освоювати Access 2003, і прийшов час поговорити про написання власних функцій на VBA. Ми розглянемо трохи теорії, тобто де створюються ці функції, для чого їх пишуть, а також як зазвичай попрактікуемся в цьому, в принципі не складному, справі.

Тему програмування на VBA Access 2003 ми вже трохи торкалися, наприклад, розглядали вбудовані функції і якщо говорити взагалі про Access 2003 то тут ми теж досягли успіху, наприклад, освоїли угруповання даних у звіті.

А сьогодні, приступимо до більш цікавою, як мені здається, темі це написання своїх функцій на мові VBA.

Що таке для користувача функції VBA і навіщо їх пишуть

Це функції, які пише сам програміст для спрощення решти коду програми.

Що тут розуміється під спрощенням, і для чого взагалі потрібно писати такі функції, я вирішив пояснити по пунктах, так як це буде більш зрозуміло для початківців, так і просто для сприйняття:

  • І в першому пункті відразу хотілося б відзначити це значне скорочення коду. Наприклад, Вам часто потрібно виконувати будь-які дії, код яких займає, скажімо, 10-20 і більше рядків, і ось представите, що Ви даний код будете повторювати 2-3-10 … раз в своєму основному коді програми, іншими словами кількість рядків основного коду зросте в рази, а чим це загрожує, розглянемо в другому пункті;
  • Якщо у Вас код дуже великий, то його буде важко надалі редагувати і до того ж якщо у Вас є повторюваною код, то тоді доведеться шукати його і виправляти код у всіх місцях, що погодьтеся найперше, це дуже нудно, а друге Ви можете просто забути змінити код в якомусь місці і програма не працюватиме або що ще гірше, буде працювати, але не правильно, за що Вас звичайно начальство не похвалить;
  • Про скорочення коду ми сказали, але також ми робимо його більш наочним і зрозумілим. Іншими словами, коли в коді ми зустрінемо виклик тієї чи іншої функції, ми відразу зрозуміємо, що вона робить, і будемо менше витрачати час на розбір і розуміння всього коду, а це принесе нам вигоду, так як ми будемо більш оперативно вносити зміни в функціонал нашої програми, а ось за це начальство може нас похвалити.

Як і у будь-якої мови програмування і середовища програмування в VBA Access є область видимості функції, наприклад, ми, можемо написати функцію яку можна буде викликати тільки в межах одного об’єкта (форми або звіту) або ми можемо її написати в області видимості всього проекту, т . Е. функцію можна буде викликати з будь-якої форми або звіту. Ми сьогодні розглянемо обидва варіанти, відповідно на прикладах.

Приклади написання функцій VBA Access

І для початку давайте визначимося, що за функцію ми будемо писати, тобто що вона буде робити. Я пропоную написати в якості простого прикладу функцію, яка буде приймати один параметр з типом date і повертати рядок виду «19 Июня 2014.». Як мені здається досить простий приклад, але раптом кому-небудь стане в нагоді.

Пишемо локальну функцію VBA

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

Для реалізації нашого прикладу давайте створимо форму, додамо на неї кнопку, клік по якій буде викликати нашу функцію. Думаю показувати, як створити форму не варто, так як ми це вже неодноразово робили, єдине скажу, що я форму назвав «Тестова форма», Елемент кнопка назвав«start” з підписом “старт»

Тепер запустимо редактор коду VBA, це можна зробити шляхом натискання кнопки на панелі інструментом «програма»

І вставляємо код нашої функції і відразу ж код її виклику, тобто код обробки події натискання кнопки (весь код прокоментований):

Private Function getStrDate (dt As Date) As String
‘Оголошуємо допоміжні змінні
Dim d As String
Dim m As String
Dim y As String
‘Отримуємо день
d = Day (dt)
‘Отримуємо місяць
m = Month (dt)
‘Визначаємо, який саме місяць
Select Case m
Case 1: m = “січень”
Case 2: m = “лютий”
Case 3: m = “Марта”
Case 4: m = “Квітня”
Case 5: m = “Мая”
Case 6: m = “червня”
Case 7: m = “липня”
Case 8: m = “Августа”
Case 9: m = “Вересня”
Case 10: m = “Жовтня”
Case 11: m = “листопада”
Case 12: m = “Грудень”
End Select
‘Отримуємо рік
y = Year (dt)
‘З’єднуємо і повертаємо результат
getStrDate = d & “” & m & “” & y & “Р”
End Function
Private Sub start_Click ()
‘Виводимо повідомлення з текстом, який поверне нам наша функція
MsgBox getStrDate ( “19.06.2014”)
End Sub

В результаті у Вас повинно вийти наступне:

Те, що це функція локальна свідчить слово Private перед назвою функції.

Тепер все зберігаємо, відкриваємо нашу форму, тиснемо, старт і отримуємо наше повідомлення:

Як бачите, ми отримали той результат, який хотіли, тобто ми передавали в якості параметра дату «19.06.2014» та отримали відповідний результат.

Пишемо глобальну функцію VBA

Для того щоб написати таку функцію створимо модуль, наприклад «test_func»А там вже напишемо нашу функцію. Для того щоб створити модуль, відкриваємо Access і на панелі об’єктів вибираємо «модулі»І тиснемо«створити».

Потім вставляємо наш код, з однією зміною, перед назвою функції пишемо Public, і у Вас повинно вийти ось така картина:

Тепер залишилося змінити код виклику нашої нової глобальної функції, для цього міняємо код обробки події натискання кнопки на нашій тестовій формі, на ось такий:

MsgBox test_func.getStrDate ( “19.06.2014”)

Зберігаємо і перевіряємо, результат буде таким же, але його нам повернула вже зовсім інша функція.

Як бачите, все немає так вже й складно, функція звичайно проста, але Ви можете писати функції для власних потреб, які будуть більш складними. Я всім раджу весь повторюється код виносити в функції, так як це буде набагато краще, як для роботи з цим кодом, так і просто для сприйняття. Сподіваюся, сьогоднішня стаття допомогла Вам розібратися з питанням «Як написати функції на VBA Access?». Удачі в програмуванні на VBA.

Ссылка на основную публикацию