Приклади використання функцій vba

Видалення непотрібних символів

Найчастіше рядки в програмі містять непотрібні символи пробілів у кінці або на початку рядка, які необхідно видалити, тому що сторонні початкові або кінцеві прогалини в рядку можуть викликати "неполадки" в роботі програми.

У VBA є три функції, призначені для видалення початкових і кінцевих пробілів з рядка: LTrim, RTrim, Trim. Слід мати на увазі, що ці функції насправді не змінюють вихідну рядок, а повертають копію рядка з віддаленими зайвими пробілами.

Приклади використання функцій vba

Визначення довжини рядка

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


Приклади використання функцій vba

Слід бути уважними з рядками фіксованої довжини. Оскільки рядок фіксованої довжини має завжди одну і ту ж довжину, функція 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.


Приклади використання функцій vba

У наведеному вище лістингу в текстовому режимі порівнюються два рядки: "Рядок за замовчуванням" і "Рядок за замовчуванням". Результат порівняння = 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

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

Іноді виникає необхідність розбиття рядка на складові частини. У 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 (найпоширеніший випадок - включення подвійних лапок).

Щоб включити в рядок символи, які неможливо ввести з клавіатури, або які мають особливе значення для VBA, використовується функція Chr.

Charcode - будь чисельне вираження, що є допустимим кодом для набору символів, що використовується комп'ютером. Повинен бути цілим числом від 0 до 255.

Функція Chr приймає код окремого символу в якості аргументу і повертає рядок, що містить відповідний цим кодом символ. Ця функція використана в вищенаведених лістингах для перекладу рядка при виведенні повідомлення на екран Chr (13).

Оскільки символи, використовувані для початку нового рядка, є дуже важливими при форматуванні повідомлень і інших строкових даних, якими маніпулюють VBA-процедури, є кілька визначених констант для цих символів, щоб не було необхідності використовувати функцію Chr:

  • vbCr - символ повернення каретки. Еквівалент Chr (13)
  • vbLf - символ зсуву на один рядок. Еквівалент Chr (10)
  • vbCrLf - символ повернення каретки + зсуву на один рядок. Еквівалент Chr (13) + Chr (10)
  • vbTab - символ табуляції. Еквівалент Chr (9)


Приклади використання функцій vba

Приклади використання функцій vba

Форматування значень даних

Дуже часто формат даних на виході програми з тих чи інших причин нас не зовсім влаштовує. Це завдання вирішує функція Format.

VBA-функція Format ідентична функції Format в Excel і використовує ті ж символи-заповнювачі форматування даних.


Format (Expression [, Format [, Firstdayofweek [, Firstweekofyear]]])

Expression - будь-яке припустиме вираз (обов'язковий аргумент).

Format - допустиме вираз іменованого або певного користувачем формату.

Firstdayofweek - константа, яка визначає перший день тижня.

Firstweekofyear - константа, яка визначає перший тиждень року.

Щоб використовувати функцію Format, треба або задати визначений формат. або створити образ певного формату. використовуючи символи-заповнювачі.


Приклади використання функцій vba

Іменовані формати для використання з функцією Format

Схожі статті