Ця книга допоможе освоїти інтегроване середовище розробки VBA і навчитися програмувати в VBA з використання об'єктів, їх властивостей, методів і подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу ж випробувати на практиці. Отримані знання ви зможете застосувати як для настроювання й удосконалення популярний офісних додатків, включаючи додатки Office XP, так і для створення власних додатків.
Книга розрахована на тих, хто збирається швидко і без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.
Книга: VBA для чайників
Робота з рядками
Робота з рядками
У VBA є досить багата колекція операторів і функцій для форматування рядків і вилучення тих їх частин, які ви вважаєте особливо привабливими. У табл. 11.3 я представив всі пов'язані з рядкам команди, які мені вдалося виявити.
Таблиця 11.3. Оператори і функції для обробки рядків
Не забувайте, що буквальні строкові значення (на відміну від змінних, що містять строкові значення) повинні полягати в лапки.
Оператор або функція
Копія рядки, представлена символами верхнього регістру
Уявімо, наприклад, що у вас є список повних імен у вигляді наступних рядків:
"Самодур, Іван Акакійович, акад."
"Невеселий, Степан Федорович, проф."
"Жартівник, Василь Степанович, канд."
(Такий список повинен зберігатися в масиві рядків; масиви будуть розглядатися в главі 13).
Припустимо, що хтось змусив вас прибрати звання в кінці кожної з вищенаведених рядків. Імена в списку мають різну довжину, так що готові функції завдання не вирішують.
Але якщо припустити, що оригінальне ім'я міститься в змінної str-Стара, то допоможе наступний трюк:
strНовая = Left (strСтарая, Len (strСтарая) - 7)
Якби VBA читав книги замість програмного коду, я пояснив би йому, що ці дії можна виконати наступним чином.
1. Спочатку викликається функція Len, яка обчислює довжину оригінальної рядки.
2. З результату, отриманого в п. 1, віднімається 7, оскільки кожне з звань займає сім символів в кінці рядка (включаючи кому і пробіл).
В результаті вийде число, якому повинна бути дорівнює довжина нового рядка.
3. Викликається функція Left, що використовує обчислену довжину в якості значення другого аргументу.
4. Нова, більш короткий рядок, повернута функцією Left, присвоюється змінної
Продовжуючи працювати з новим списком вже без звань, припустимо, що тепер вас попросили витягти імена по батькові та помістити їх в новий список. Це завдання можна виконати за допомогою наступного оператора:
strMMfl = Mid (strHoBafl, InStr (str-Нова, ",") + 2)
Функція Mid витягує символи з будь-якого місця в рядку, яку ви вкажете у вигляді аргументу. Другий же аргумент цієї функції говорить, з якого місця в цьому рядку слід почати витяг символів. В даному випадку цей аргумент є вираз, що складається з функції InStr плюс 2.
Функція InStr шукає в заданому рядку (перший аргумент) інший рядок (другий аргумент).
В даному випадку другий аргумент - це кома, яка в списку слід за прізвищем. Значення, яке повертає InStr, відповідає номеру позиції в першому рядку, де зустрічається другий рядок, - тепер ви знаєте, де закінчується прізвище.
До значенням, повернутому функцією InStr, додається 2, щоб пропустити кому і наступний за нею пробіл і знайти позицію, з якої починається ім'я. Тепер функція Mid витягне символи, починаючи з цього місця і до кінця рядка (оскільки не вказано третій, необов'язковий аргумент довжина).
У реальному програмуванні роботі з датами і часом відводиться далеко не остання, а часто і головна роль. Тому VBA пропонує ряд операторів і функцій, що дозволяють з'ясувати поточні час і дату, проводити обчислення з датами і витягувати з змінних зі значеннями дат різні компоненти типу часу, року або дня тижня.
У табл. 11.4 представлено опис таких команд. У деяких функцій в цій таблиці опущені необов'язкові аргументи - ви завжди зможете уточнити деталі по довідці VBA.
Після таблиці кілька найбільш важливих команд, що відносяться до дат і часу, розглядаються докладніше.
Щоб скористатися наданим тут матеріалом, ви повинні чітко уявляти, як VBA обробляє значення дат і часу і як працювати зі змінними, що зберігають дати (див. Розділ 7).
Таблиця 11.4. Оператори і функції для роботи з датами і часом
При завданні аргументів не забувайте укладати буквальні значення дат в пару символів #, а строкові значення типу інтервалів дат - в лапки.
Ціле число, яке представляє рік, відповідний зазначеної дати
У VBA є кілька простих операторів і функцій для роботи з системною датою та системним часом, тобто зі значенням дати і часу, яке змінюється і зберігається вбудованим годинником комп'ютера.
Функція Now повертає поточні системні дату і час у форматі змінної типу Data, як, наприклад, в разі datЛовіМомент = Now.
Щоб забезпечити роботу з системним часом і системною датою окремо, VBA пропонує по парі окремих команд для кожного з цих двох елементів системи. Дещо несподіваним при цьому виявляється те, що в кожній з пар і оператор, і функція мають однакові імена.
Наприклад, щоб витягти (тобто отримати) системне час у форматі дати VBA, потрібно використовувати функцію Time, а щоб встановити (тобто задати) системний час, необхідно використовувати оператор Time. Іншими словами, ключове слово Time виконує різні дії в залежності від контексту:
datЕтоMoeBpeмя = Time 'функція Time повертає значення
Time (113: 15 АМ #) 'оператор Time встановлює системний час
Подібним чином працюють і розрізняються відповідні функції Date і оператор Date.