Робота з рядками

Робота з рядками

Ця книга допоможе освоїти інтегроване середовище розробки 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.

Схожі статті