Видалення непотрібних символів
Найчастіше рядки в програмі містять непотрібні символи пробілів у кінці або на початку рядка, які необхідно видалити, тому що сторонні початкові або кінцеві прогалини в рядку можуть викликати "неполадки" в роботі програми.
У VBA є три функції, призначені для видалення початкових і кінцевих пробілів з рядка: LTrim, RTrim, Trim. Слід мати на увазі, що ці функції насправді не змінюють вихідну рядок, а повертають копію рядка з віддаленими зайвими пробілами.
Визначення довжини рядка
Довжину рядка, як правило, треба знати при форматуванні повідомлень для користувача або при форматуванні строкових даних, що вводяться процедурою в робочий лист Excel або документ Word. VBA для цих цілей використовує функцію Len. У наведених нижче лістингу між знаками круглих дужок і словом мається на два пробілу.
Слід бути уважними з рядками фіксованої довжини. Оскільки рядок фіксованої довжини має завжди одну і ту ж довжину, функція Len завжди повертає оголошену довжину рядка, незалежно від фактичної довжини рядка. Наприклад, якщо в строкової змінної фіксованої довжини StrokeName, що має довжину 15 символів, фактично знаходиться слово "сонце", то функція Len (StrokeName) поверне результат 15. Щоб в такому випадку дізнатися фактичну довжину рядка (в нашому випадку - 6), необхідно використовувати наступну комбінацію функцій: Len (Trim (StrokeName)).
Порівняння і пошук рядків
У VBA є дві функції, які допомагають порівнювати рядки: StrComp, InStr.
функція StrComp
StrComp (String1, String2 [, Compare])
String1, String2 - будь-які два строкових вираження, які необхідно порівнювати.
Compare - необов'язковий аргумент, може бути будь-який з наступних зумовлених констант (якщо він опускається, то використовується поточна установка Option Compare):
- vbBinaryCompare - бінарне порівняння двох рядків;
- vbTextCompare - текстове порівняння двох рядків;
- vbDatabaseCompare - використовується тільки в Microsoft Access.
При виконанні StrComp повертається одне з наступних значень:
- -1, якщо String1 менше String2;
- 0, якщо String1 і String2 рівні;
- 1, якщо String1 більше String2.
У наведеному вище лістингу в текстовому режимі порівнюються два рядки: "Рядок за замовчуванням" і "Рядок за замовчуванням". Результат порівняння = 1, тобто "Рядок за замовчуванням" більше, ніж "Рядок за замовчуванням".
Експериментуйте з різноманітними рядками для кращого розуміння роботи функції StrComp.
функція InStr
Функція InStr дає можливість визначити, чи містить один рядок інший рядок.
StrComp ([Start,] String1, String2 [, Compare])
String1, String2 - будь-які допустимі рядкові вирази. Функція перевіряє чи міститься String1 в String2.
Compare - необов'язковий аргумент, може бути будь-який з наступних зумовлених констант (якщо він опускається, то використовується поточна установка Option Compare):
- vbBinaryCompare - бінарне порівняння двох рядків;
- vbTextCompare - текстове порівняння двох рядків;
- vbDatabaseCompare - використовується тільки в Microsoft Access.
Start - необов'язковий аргумент, є чисельною виразом і вказує положення символу в String1, з якого повинна починатися перевірка.
InStr повертає число, що позначає положення символу в String1, де було виявлено String2. Якщо InStr не знаходить String2 в String1, то повертається 0. Якщо String1 (або String2) має значення Null, то функція також повертає Null.
розбиття рядка
Іноді виникає необхідність розбиття рядка на складові частини. У VBA цю задачу вирішують три функції: Left, Right, Mid.
функція Left
Left (String, Length)
String - будь-яке припустиме строкове вираження.
Length - будь чисельне значення.
Функція повертає копію String, починаючи з першого символу і включаючи кількість символів, заданих за допомогою Length. Якщо Length є числом, більшим, ніж фактична довжина String, то повертається все строкове вираження String.
функція Right
Right (String, Length)
String - будь-яке припустиме строкове вираження.
Length - будь чисельне значення.
Функція повертає копію String, починаючи з останнього символу і включає справа наліво кількість символів, заданих за допомогою Length. Якщо Length є числом, більшим, ніж фактична довжина String, то повертається все строкове вираження String. Функція Right завжди копіює символи від кінця рядка до її початку.
функція Mid
Mid (String, Start, [, Length])
String - будь-яке припустиме строкове вираження.
Length, Start - будь-які числові значення.
Функція Mid повертає копію String, починаючи з положення символу в String, що задається за допомогою аргументу Start. Необов'язковий аргумент Length визначає кількість копіюються в Mid символів з String. Якщо Start містить більше число, ніж фактична довжина String, то повертається порожній рядок.
Символи, які не можна ввести з клавіатури
Найчастіше трапляється, що треба ввести який-небудь символ, для якого відсутня клавіша на клавіатурі (наприклад, символ копірайту). Інша ситуація - коли треба в рядок включити службовий символ VBA (найпоширеніший випадок - включення подвійних лапок).
Щоб включити в рядок символи, які неможливо ввести з клавіатури, або які мають особливе значення для VBA, використовується функція Chr.
Charcode - будь чисельне вираження, що є допустимим кодом для набору символів, що використовується комп'ютером. Повинен бути цілим числом від 0 до 255.
Функція Chr приймає код окремого символу в якості аргументу і повертає рядок, що містить відповідний цим кодом символ. Ця функція використана в вищенаведених лістингах для перекладу рядка при виведенні повідомлення на екран Chr (13).
Оскільки символи, використовувані для початку нового рядка, є дуже важливими при форматуванні повідомлень і інших строкових даних, якими маніпулюють VBA-процедури, є кілька визначених констант для цих символів, щоб не було необхідності використовувати функцію Chr:
- vbCr - символ повернення каретки. Еквівалент Chr (13)
- vbLf - символ зсуву на один рядок. Еквівалент Chr (10)
- vbCrLf - символ повернення каретки + зсуву на один рядок. Еквівалент Chr (13) + Chr (10)
- vbTab - символ табуляції. Еквівалент Chr (9)
Форматування значень даних
Дуже часто формат даних на виході програми з тих чи інших причин нас не зовсім влаштовує. Це завдання вирішує функція Format.
VBA-функція Format ідентична функції Format в Excel і використовує ті ж символи-заповнювачі форматування даних.
Format (Expression [, Format [, Firstdayofweek [, Firstweekofyear]]])
Expression - будь-яке припустиме вираз (обов'язковий аргумент).
Format - допустиме вираз іменованого або певного користувачем формату.
Firstdayofweek - константа, яка визначає перший день тижня.
Firstweekofyear - константа, яка визначає перший тиждень року.
Щоб використовувати функцію Format, треба або задати визначений формат. або створити образ певного формату. використовуючи символи-заповнювачі.