Поиск…


замечания

Строки являются ссылочным типом и являются центральными для большинства задач программирования. Строкам присваивается текст, даже если текст является числовым. Строки могут быть нулевой длины или любой длины до 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."


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow