Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EDO_VBA.doc
Скачиваний:
3
Добавлен:
11.08.2019
Размер:
494.08 Кб
Скачать

9.8. Функції — замінники синтаксичних конструкцій

У VBA передбачено декілька функцій, які дозволяють замінювати синтаксичні конструкції умовного переходу, наприклад If...Then...Else чи Select Case. Якихось переваг застосування цих функцій не дає (можливо, код стане на декілька рядків коротше), але професійні програмісти дуже люблять їх використовувати.

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

ˆ Choose() — приймає число (номер значення) і список значень. Повертає значення зі списку, порядковий номер якого відповідає передаваному числу.

Наприклад, виклик функції :

Choose(2, "Перший", "Другий", "Третій")

поверне "Другий".

ˆ IIf() — розшифровується як Immediate If, т. е. "негайний If". Представляет собою спрощений варіант If...Else, коли перевіряється умова і повертається одно з двох значень. Наприклад:

IIf(n > 10, "Більше десяти", "Менше або рівно десяти")

ˆ Switch() — приймає необмежену кількість пар типу "вираз = значення", перевіряє кожний вираз на істинність і повертає значення для першого виразу, яке виявилося істинним. Наприклад:

Function Language (CityName As String)

Language = Switch(CityName = "Москва", "російський", CityName = _

"Париж", "французький", CityName = "Берлін", "німецький")

End Function

9.9. Функції для роботи з масивами

Як вже говорилося, при програмній роботі з додатками Microsoft Office масиви використовуються рідко. Замість них застосовуються колекції. Проте в VBA передбачені можливості і для роботи з масивами.

ˆ Array() — дозволяє автоматично створити масив потрібного розміру і типу і відразу завантажити в нього передані значення:

Dim myArray As Variant

myArray = Array(10,20,30)

MsgBox A(2)

ˆ Filter() — дозволяє на основі одного масиву отримати інший, відфільтрувавши в початковому масиві потрібні нам елементи.

ˆ LBound(), UBound() — повертають відповідно інформацію про нижню межі масиву (номер першого наявного в масиві значення) і про верхній межі (номер останнього наявного значення).

ˆ Join() — сполучає множину рядків, що становлять масив, в одну стрічкову змінну. В якості роздільника за умовчанням використовується пропуск, але можна вказати і свій роздільник. Зворотна функція, створює масив з одного рядка, — Split(). Ці функції дуже зручні, наприклад, при обробці значень, отриманих з бази даних, електронної таблиці, макетного файлу і т. д.

9.10. Функції для роботи з файловою системою

У VBA передбачений набір вбудованих функцій для виконання різних операцій з файлами, каталогами, дисками і іншими об'єктами файлової системи. Інформація про ці функції приведена далі. Але не забувайте, що окрім цих функцій (загальних для усіх застосувань, в яких використовується VBA) у нас є, по-перше, можливості, специфічні для даного додатку (наприклад, відкриття і збереження документу Word засобами об'єктної моделі Word).

По-друге, на будь-якому комп'ютері під управлінням Windows є об'єктна бібліотека Microsoft Scripting Runtime, дуже прота і зручна для виконання різних операцій з файлами, каталогами і дисками. Можна додати в проект VBA посилання на неї і використовувати усі наявні в ній можливості.

Далі приведені вбудовані функції для роботи з файловою системою, передбачені в VBA.

ˆ CurDir() — функція, яка повертає шлях до поточного каталогу, в якому зберігатимуться файли вашого застосування за умовчанням.

ˆ Dir() — дозволяє шукати файл або каталог по вказаному шляху на диску.

ˆ EOF() — при операції читання або запису у файл на диску ця функція поверне True, якщо ви знаходитеся у кінці файлу.

ˆ Error() — дозволяє повернути опис помилки по її номеру. Генерувати помилку треба за допомогою методу RaiseError() спеціального об’єкта Err

ˆ FileAttr() — дозволяє визначити, як саме був відкритий вами файл в файловій системі: на читання, запис, додавання, в двійковому або текстовому режимі і т. д.

ˆ FileDateTime() — дозволяє отримати інформацію про останній час звернення до вказаного вами файлу. Якщо до файлу після створення ні разу не зверталися, то функція поверне час створення файлу.

ˆ FileLen() — повертає довжину вказаного вами файлу у байтах.

ˆ FreeFile() — дозволяє визначити наступну вільну цифру, яку можна використовувати як номер файлу при його відкритті.

ˆ GetAttr() — дозволяє звернутися до файлу і отримати інформацію про його атрибути (прихований, доступний тільки для читання, архівний і т. д.).

ˆ Input() — дозволяє зчитати інформацію з відкритого файлу. Наприклад, зчитати інформацію з файлу C :\text1.txt і вивести її у вікно повідомлень можна так:

Dim MyChar

'Відкриваємо файл функцією Open() на читання

Open "c:\text1.txt" For Input As #1

Do While Not EOF(1) ' Доки файл не кінчився,

' отримуємо по одному символу і додаємо його до попередніх

MyChar = MyChar & Input(1, #1)

Loop

Close #1 'Закриваємо файл

MsgBox MyChar 'Виводиться його зміст у вікно повідомлення

Варіант цієї функції — InputB() — дозволяє вказати кількість байт, які потрібно зчитати з файлу.

ˆ Loc() — від Location (місцезнаходження) — повертає число, яке визначає поточне місце вставки або читання у відкритому файлі. Схоже працює функція Seek(), але вона повертає інформацію про позицію, з якої виконуватиметься наступна операція читання або вставки.

ˆ LOF() — від length of file — дозволяє визначити довжину відкритого файлу байтах.

Open — це не функція, а команда VBA, але без неї операції читання і запису з файлами на диску не зробити. Довідку по ній можна знайти по словосполученню "Open Statement". Як мінімум, їй треба передати ім'я файлу, що відкривається, режим відкриття і номер файлу (номер файлу — це його ідентифікатор для передачі іншим функціям, його призначаєте ви самі). Наприклад, щоб відкрити файл на читання з можливістю одночасного звернення до його інших користувачів, можна використовувати код виду :

Open "з:\file1.txt" For Output Shared As #1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]