Строковые функции VBA, Asc(), Chr(), InStr(), Len(), LCase(), UCase(), Replace(), Trim()
Это — наиболее часто используемые функции. Требуются они постоянно, и знать их необходимо очень хорошо.
- ASC() — эта функция позволяет вернуть числовой код
для переданного символа. Например, ASC("D") вернет 68. Эту функцию
удобно использовать для того, чтобы определить следующую или предыдущую
букву. Обычно она используется вместе с функцией Chr(), которая
производит обратную операцию — возвращает символ по переданному его
числовому коду. Например, такой код в Excel позволяет написать в ячейки с
A1 по A20 последовательно буквы русского алфавита от A до У:
Dim n, nCharCode As Integer
n = 1
nCharCode = Asc("А")
Do While n <= 20
ActiveWorkbook.ActiveSheet.Range("A" & n).Value = Chr(nCharCode)
n = n + 1
nCharCode = nCharCode + 1
Loop
Варианты этой функции — AscB() и AscW() . AscB() возвращает только первый байт числового кода для символа, а AscW() возвращает код для символа в кодировке Unicode.
- Chr() — очень важная функция. Возвращает символ по
его числовому коду. Помимо того, что используется в паре с функцией
Asc() (см. пример по этой функции), без нее не обойтись еще в одной
ситуации: когда нужно вывести служебный символ. Например, нам нужно
напечатать в Word значение "Газпром" (в кавычках). Кавычка — это
служебный символ, и попытка использовать строку вида
Selection.Text = ""Газпром""
сразу приведет к синтаксической ошибке. А вот так все будет в порядке:
Selection.Text = Chr(34) & "Газпром" & Chr(34)
есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
- InStr() и InStrRev() — одна из самых
популярных функций. Позволяет обнаружить в теле строковой переменной
последовательность символов и вернуть ее позицию. Если
последовательность не обнаружена, то возвращается 0.
- Left(), Right(), Mid() —
возможность взять указанное вами количество символов из существующей
строковой переменной слева, справа или из середины соответственно.
- Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
- LCase() и UCase() — перевести строку в
нижний и верхний регистры соответственно. Часто используется для
подготовки значения к сравнению, когда при сравнении регистр не важен
(фамилии, названия фирм, городов и т.п.).
- LSet() и RSet() — возможность заполнить
одну переменную символами другой без изменения ее длины (соответственно
слева и справа). Лишние символы обрезаются, на место недостающих
подставляются пробелы.
- LTrim(), RTrim(), Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
- Replace() — возможность заменить в строке одну последовательность символов на другую.
- Space() — получить строку из указанного вами
количества пробелов; String() — получить строку из указанного вами
количества символов (которые опять-таки указываются вами). Обычно
используются для форматирования вывода совместно с функцией Len(). Еще
одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
- StrComp() — возможность сравнить две строки.
- StrConv() — возможность преобразовать строку (в
Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов
заглавной и т.п.).
- StrReverse() — "перевернуть" строку, разместив ее символы в обратном порядке.
- Tab() — еще одна функция, которая используется для
форматирования вывода на консоль. Размножает символы табуляции в том
количестве, в котором вы укажете. Если никакое количество не указано,
просто вставляет символ табуляции. Для вставки символа табуляции в
строковое значение можно также использовать константу vbTab.