Строки

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

  • строки фиксированной длины — при объявлении строки фиксированной длины после названия типа String указывается символ *, а затем размер:
Dim s As String * 5 ' Строка длиной 5 символов
  • строки произвольной длины — чтобы объявить строку произвольной длины достаточно указать только тип String:
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(<Код символа>), которая возвращает символ по его коду. Перечислим специальные символы и их коды:

  • Chr(10) — перевод строки;
  • Chr(13) — возврат каретки;
  • Chr(9) — знак табуляции;
  • Chr(11) — вертикальная табуляция;
  • Chr(7) — звонок;
  • Chr(8) — забой;
  • Chr(12) — перевод формата;
  • Chr(0) — нулевой символ (не является признаком конца строки).

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

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

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

  • vbCr — возвращает символ возврата каретки; эквивалентно Chr(13);
  • vbLf — возвращает символ перевода строки; эквивалентно Chr(10);
  • vbCrLf — возвращает символ возврата каретки плюс символ перевода строки; эквивалентно Chr(13) & Chr(10);
  • vbNewLine — эквивалентно Chr(13) & Chr(10) или в Macintosh Chr(13);
  • vbTab — возвращает символ табуляции; эквивалентно Chr(9);
  • vbNullChar — возвращает нулевой символ; эквивалентно Chr(0).

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

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

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

Dim s As String
s = "Фильм ""Аватар"" очень зрелищный"
Debug.Print s ' Фильм "Аватар" очень зрелищный

Visual Basic for Applications (VBA)
Статьи по Visual Basic for Applications (VBA)

Помощь сайту

Yandex-деньги: 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов