Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Строки
Язык 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)
или в MacintoshChr(13)
;vbTab
— возвращает символ табуляции; эквивалентноChr(9)
;vbNullChar
— возвращает нулевой символ; эквивалентноChr(0)
.
Пример вставки в строку символа возврата каретки и символа перевода строки:
Dim s As String
s = "Строка1" & vbCrLf & "Строка2"
Кавычка также является специальным символом, так как вся строка должна быть указана внутри кавычек. Попытка указать кавычку внутри строки приведет к ошибке при компиляции. Чтобы внутри строки вставить кавычку, необходимо вместо одной кавычки указать сразу две:
Dim s As String
s = "Фильм ""Аватар"" очень зрелищный"
Debug.Print s ' Фильм "Аватар" очень зрелищный
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов