VBA
Объявление и назначение строк
Поиск…
замечания
Строки являются ссылочным типом и являются центральными для большинства задач программирования. Строкам присваивается текст, даже если текст является числовым. Строки могут быть нулевой длины или любой длины до 2 ГБ. Современные версии VBA хранят строки внутри с использованием байтового массива байтов байтов байтов (альтернатива Unicode).
Объявить строчную константу
Const appName As String = "The App For That"
Объявление переменной переменной ширины
Dim surname As String 'surname can accept strings of variable length
surname = "Smith"
surname = "Johnson"
Объявить и назначить строку с фиксированной шириной
'Declare and assign a 1-character fixed-width string
Dim middleInitial As String * 1 'middleInitial must be 1 character in length
middleInitial = "M"
'Declare and assign a 2-character fixed-width string `stateCode`,
'must be 2 characters in length
Dim stateCode As String * 2
stateCode = "TX"
Объявить и присвоить массив строк
'Declare, dimension and assign a string array with 3 elements
Dim departments(2) As String
departments(0) = "Engineering"
departments(1) = "Finance"
departments(2) = "Marketing"
'Declare an undimensioned string array and then dynamically assign with
'the results of a function that returns a string array
Dim stateNames() As String
stateNames = VBA.Strings.Split("Texas;California;New York", ";")
'Declare, dimension and assign a fixed-width string array
Dim stateCodes(2) As String * 2
stateCodes(0) = "TX"
stateCodes(1) = "CA"
stateCodes(2) = "NY"
Назначение определенных символов в строке с помощью оператора Mid
VBA предлагает функцию Mid для возврата подстрок внутри строки, но также предлагает Mid Statement, который может использоваться для назначения подстрок или отдельных символов с строкой.
Функция Mid
обычно появляется в правой части оператора присваивания или в состоянии, но Mid
Statement обычно появляется в левой части оператора присваивания.
Dim surname As String
surname = "Smith"
'Use the Mid statement to change the 3rd character in a string
Mid(surname, 3, 1) = "y"
Debug.Print surname
'Output:
'Smyth
Примечание. Если вам нужно назначить отдельные байты в строке вместо отдельных символов внутри строки (см. Примечания ниже относительно MidB
набора символов), можно использовать инструкцию MidB
. В этом случае второй аргумент для оператора MidB
- это позиция байта, основанная на 1, где будет MidB(surname, 5, 2) = "y"
замена, так что эквивалентная строка в примере выше будет MidB(surname, 5, 2) = "y"
.
Назначение в массив байтов и из него
Строки могут быть назначены непосредственно байт-массивам и наоборот. Помните, что строки хранятся в многобайтовом наборе символов (см. Примечания ниже), поэтому только каждый другой индекс результирующего массива будет частью символа, который попадает в диапазон ASCII.
Dim bytes() As Byte
Dim example As String
example = "Testing."
bytes = example 'Direct assignment.
'Loop through the characters. Step 2 is used due to wide encoding.
Dim i As Long
For i = LBound(bytes) To UBound(bytes) Step 2
Debug.Print Chr$(bytes(i)) 'Prints T, e, s, t, i, n, g, .
Next
Dim reverted As String
reverted = bytes 'Direct assignment.
Debug.Print reverted 'Prints "Testing."