Строки

Язык VBA поддерживает два типа строк:

Dim s As String * 5 ' Строка длиной 5 символов
Dim s As String     ' Строка произвольной длины

Строки в VBA по умолчанию хранятся в кодировке Unicode (один символ кодируется двумя байтами). При вводе и выводе производится автоматическое преобразование кодировки. Если необходимо обрабатывать какие-либо бинарные данные или работать с однобайтовыми строками, то можно использовать массив значений типа Byte или воспользоваться функцией StrConv() для преобразования кодировки (см. разд. 6.8).

Создание строки

Присваивание значения переменной осуществляется с помощью оператора =, после которого указывается последовательность символов внутри кавычек:

Dim s As String
s = "Строка"

Если при использовании строк фиксированной длины присвоить значение превышающее по длине размер, указанный при объявлении, то строка будет обрезана:

Dim s As String * 3
s = "Строка"
Debug.Print s    ' Стр

Следует учитывать, что заключить объект в кавычки на нескольких строках нельзя. Переход на новую строку вызовет синтаксическую ошибку. Перенести объект с помощью последовательности пробел плюс символ подчеркивания также нельзя. В этом случае нужно использовать операцию конкатенации строк и последовательность пробел плюс символ подчеркивания:

Dim s As String
s = "Строка 1" _
      & "Строка 2" _
      & "Строка 3"
Debug.Print s ' Строка 1Строка 2Строка 3

Если в операции присваивания перед названием переменной указать оператор LSet, то первоначальная длина строки сохраняется и внутри нее выводится новая строка. Если длина новой строки меньше длины первоначальной строки, то вместо недостающих символов вставляются пробелы, а новая строка выравнивается по левому краю. Если новая строка более длинная, то она обрезается. Пример:

Dim s As String
s = "Длинная строка"
LSet s = "пример"
Debug.Print "'" & s & "'" ' 'пример        '
s = "стр"
LSet s = "пример"
Debug.Print "'" & s & "'" ' 'при'

Если в операции присваивания перед названием переменной указать оператор RSet, то первоначальная длина строки сохраняется и внутри нее выводится новая строка. Если длина новой строки меньше длины первоначальной строки, то вместо недостающих символов вставляются пробелы, а новая строка выравнивается по правому краю. Если новая строка более длинная, то она обрезается. Пример:

Dim s As String
s = "Длинная строка"
RSet s = "пример"
Debug.Print "'" & s & "'" ' '        пример'
s = "стр"
RSet s = "пример"
Debug.Print "'" & s & "'" ' 'при'

Специальные символы

Специальные символы — это служебные или непечатаемые символы, которые невозможно вставить в строку обычным способом. Чтобы добавить такие символы нужно воспользоваться функцией Chr(<Код символа>), которая возвращает символ по его коду. Перечислим специальные символы и их коды:

Пример вставки в строку символа возврата каретки и символа перевода строки:

Dim s As String
s = "Строка1" & Chr(13) & Chr(10) & "Строка2"

Вместо функции Chr() можно использовать специальные константы:

Пример вставки в строку символа возврата каретки и символа перевода строки:

Dim s As String
s = "Строка1" & vbCrLf & "Строка2"

Кавычка также является специальным символом, так как вся строка должна быть указана внутри кавычек. Попытка указать кавычку внутри строки приведет к ошибке при компиляции. Чтобы внутри строки вставить кавычку, необходимо вместо одной кавычки указать сразу две:

Dim s As String
s = "Фильм ""Аватар"" очень зрелищный"
Debug.Print s ' Фильм "Аватар" очень зрелищный
Предыдущая статья Все статьи Следующая статья