За допомогою відступів виділяють вкладені цикли і умовних операторів усередині процедури.
Тексти програм прийнято забезпечувати коментарями. На початку кожного рядка коментаря ставиться апостроф, і такі рядки не впливають на виконання програми, а при синтаксичному аналізі і компіляції - пропускаються. Разом з відступами ACCESS 97 дозволяє використовувати різні шрифти і кольори для виділення фрагментів тексту модуля. Ці параметри встановлюються на вкладці Модуль діалогового вікна Параметри.
Код модуля і тексти підпрограм/функцій редагуються також як документи в звичайному текстовому редакторові. Для пошуку процедури в тексті модуля використовується список процедур, що знаходиться у верхній частині вікна модуля.
При переміщенні курсора з рядка коду програма автоматично перевіряє синтаксис цього рядка і у разі виявлення помилки виводить на екран відповідне повідомлення. Для відмови від такої перевірки слід вимкнути опцію перевірка синтаксису на вкладці Модуль діалогового вікна Параметри.
Для швидкого пошуку і заміни фрагментів коду застосовуються команди Знайти і Замінити з меню Правка.
У ACCESS при редагуванні фрагментів кодів окрім загальноприйнятих використовуються додаткові комбінації клавіш: Ctrl + Y дозволяє вставити в буфер рядок, в якому знаходиться курсор, не виконуючи його маркіровку; F3 і Shift + F3 дозволяють проглянути всі фрагменти модуля, в яких зустрічається шукана послідовність символів. F3 дублює команду Знайти далі з меню Правка і кнопку Знайти далі вікна пошуку.
Завдяки аргументам користувач має можливість управляти виконанням процедури. При описі процедури, залежної від аргументів, ім'я аргументу прийнято вводити в дужках за ім'ям процедури в рядку з ключовим словом Function/Sub. Наприклад:
Function Рубли_в_Доллары (Коефіцієнт)
При виклику такої функції значення аргументу указується в дужках після імені функції Наприклад:
=Рубли_в_Доллары (4500)
Виклик процедури, що має аргументи, повинен супроводжуватися завданням значень для всіх оголошених аргументів. Ці значення перераховуються в тому ж порядку, що і аргументи при оголошенні і розділяються комами. У призначених для користувача функціях або модулях як аргументи можуть застосовуватися вирази.
Змінні використовуються для збереження значень величин, що змінюються в процесі виконання програми. Кожна змінна має ім'я по якому до неї звертаються. Правила привласнення імен аналогічно правилу привласнення імен для полів. Привласнення значення для змінної здійснюється за допомогою оператора привласнення. У лівій частині оператора привласнення ім'я змінної, а в правій - значення або вираз.
Змінні можуть створюватися автоматично, у міру появи в процедурі (неявне оголошення). За умовчанням неявно оголошені змінні мають тип Variant. Усередині такої змінної окрім значення зберігається індикатор типу значення.
Неявне оголошення типу допустиме тільки у разі відсутності оператора Option Explicit в області опису модуля. Щоб при створенні нового модуля запобігти появі цього оператора в області опису, слід відключити опцію явний опис змінних на вкладці Модуль діалогового вікна Параметри.
Рекомендується описувати всі змінні явно, це дозволить уникнути помилок, пов'язаних з перетворенням типів даних. Явний опис типу проводиться оператором Dim, після якого указується ім'я змінної і її тип. Якщо при явному оголошенні змінній не вказаний тип даних, а задано тільки ім'я змінної те буде створене змінна типа Variant, якою можна привласнювати ланцюжки символів, числа з плаваючою крапкою, значення дати і часу. ACCESS 97 однозначно ідентифікує привласнюванні значення, оскільки разом з ними він зберігає в змінній і ознака типу.
У ACCESS використовуються наступні типи даних:
Тип даних. Значення, що зберігаються. Область значень
Boolean Логічна величина True або False
Byte Ціле позитивне число Від 0 до 255
Integer Ціле число Від - 32768 до 32768
Long Ціле число подвійної довжини Від - 2147483648 до 2147483648
Single Число з плаваючою крапкою Від - 3,402823Е38 до - 1,401298Е-45 і від 1,401298Е-45 до 3,402823Е38
Double Число з плаваючою точкою подвійної точності Від - 1,79769313486232Е308 до - 4,94065645841247Е-32 і від 4,94065645841247Е-324 до 1,79769313486232Е308
Currency Число з фіксованою крапкою (використовується для проведення грошових розрахунків) Від - 922337203685477,5808 до 922337203685477,5807
Rate Дата Від 1 січня 100 року до 31 грудня 9999 року
String (фіксованої довжини) Рядкове значення Довжина від 1 до 65536
String (змінної довжини) Рядкове значення Довжина від 0 до 2147483648
Для оголошення декілька змінних можна користуватися одним оператором Dim, перераховуючи їх через кому.
При оголошенні змінній слід пам'ятати про область дії. Змінні оголошені в процедурі, можна використовувати тільки усередині цієї процедури. Якщо змінна повинна бути доступна у всіх процедурах одного модуля, її необхідно оголосити в області опису модуля.
Тут також можна застосовувати оператора Dim. Найбільшу область дії має змінна, оголошена глобальною (з префіксом Global) в області опису модуля. Синтаксис оператора Global не відрізняється від синтаксису оператора Dim.
На відміну від змінній, константа містить фіксоване значення, яке не може бути змінене в процесі виконання програми. Згідно правилам хорошого тону, константи, як і змінні, слід оголошувати явно, указуючи їх імена і значення.
Для оголошення константи використовується оператор Const. Оголошену константу можна використовувати в програмі, звертаючись до неї по імені. Наприклад:Const Число_Пи = 3.1415926
У мові VBA, як і в інших мовах програмування, основними елементами, керівниками ходом виконання процедури, є умовні оператори. Найбільш простій з них - оператор If... Then:
If Поліна = "Ж" Then
Поздоровлення = "З 8 березня!"
End if
Якщо умова, задана виразом між ключовими словами If і Then виконується, дотримуються інструкції усередині блоку, обмеженого ключовими словами Then і End if. Інакше оператори між ключовими словами не виконуються, а ACCESS перейде до обробки оператора, який слідує за ключовими слова End if. У разі потреби провести дві різні дії (одне при дотриманні умови, а друге - ні), доцільно скористатися повною формою оператора If:
If вираз Then
Оператор1
Else
Оператор2
End if
Якщо умова дотримується, виконується Оператор1 (або група операторів, розташованих між ключовими словами Then і Else, а якщо не дотримується - Оператор2 (або група операторів, розташованих між ключовими словами Else і End if.
Проте, не завжди можливі два варіанти рішення. Враховуючи це, VBA надає в розпорядження користувачів оператора Select Case, призначеного для вибору одного з множин варіантів рішень:
Select Case Місто
Case "Київ"
Код_МГТС = "044"
Case "Москва"
Код_МГТС = "095"
Case "Запоріжжя"
Код_МГТС = "061-2"
Case Else
Print "Я не знаю такого міста!"
End Select
При виконанні цього оператора перевіряється значення змінної Місто. Залежно від результату перевірки змінної Код_МГТС привласнюється телефонною код деякого міста. Якщо значення змінної Місто не співпадає ні з одним із значень, перерахованих в рядках з ключовим словом Case, проводиться дія, вказаною між ключовими словами Case Else і End Select.
Цикл використовується для багатократного повторення однієї або декількох інструкцій. Кількість повторень циклу пов'язана з деякою умовою. У VBA передбачено декілька різновидів циклів. Простим прикладом циклічної конструкції є так званий цикл по лічильнику.
For Лічильник = 1 To 10
Print Лічильник
Next Лічильник
Цикл по лічильнику обмежується ключовими словами For і Next. Після ключового слова For указується ім'я змінної, яка виконуватиме роль лічильника, після знаку рівності - початкове значення лічильника, а після ключового слова To - кінцеве значення лічильника.
Ще один різновид циклу - While-цикл. Умова виконання команд усередині такого циклу визначається деяким умовним оператором:
Do While Лічильник <> 10
Loop
Різновидом циклу Do є Until-цикл, який виконується, поки умовний вираз помилковий:
Do Until Счетчик=10
Счетчик=Счетчик+1
Loop
Як визначити останній запис в таблиці Excel?
Необхідно знайти останній запис в електронній таблиці. Це можна було б організувати функцією Application. SpecialCells (xlLastCell)
Як відмінити виділення діапазону осередків?
ActiveSheet. Cells. Select
Після припинення роботи макросу діапазон залишається виділеним. Як це виділення прибрати?
Selection. Cells (1). Select Фокус введення потрапить після цього на перший осередок раніше виділеного діапазону.
Як з макросу Excel програмно створити таблицю Access?
Ось фрагмент коду, який створює таблицю "BalanceShifr" базі даних MS Access:
Не забудьте виставити в Excel посилання на об'єкти DAO!
[VBA] Tools/References/Available References/ [x] MicroSoft DAO?.? Library ' Function CreateTable ' Create temporary table "BalanceShifr" into temporary database
Public Function CreateTable (ByVal dbTemp As Database) As Boolean
Dim tdfTemр As TableDef
Dim idx As Index
Dim fld As Field
On Error GoTo errhandle
CreateTable = True
' CREATE TABLE "BalanceShifr"
Set tdfTemp = dbTemp. CreateTableDef ("BalanceShifr")
Set fld = tdfTemp. CreateField ("ConditionId", dbLong)
fld. Required = True
tdfTemp. Fields. Append fld
Set fld = tdfTemp. CreateField ("Account", dbText,
4)
tdfTemp. Fields. Append fld
Set fld = tdfTemp. CreateField ("SubAcc", dbText,
4)
tdfTemp. Fields. Append fld
Set fld = tdfTemp. CreateField ("Shifr", dbLong)