サーチ…


備考

文字列は参照型であり、ほとんどのプログラミングタスクの中心です。テキストが数値であっても、文字列には文字列が割り当てられます。文字列は、長さゼロまたは最大2GBまでの長さにすることができます。現代バージョンの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 ステートメントも提供します。

Mid関数は通常、代入ステートメントの右側または条件に表示されますが、通常、 Midステートメントは代入ステートメントの左側に表示されます。

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ステートメントの2番目の引数は、置き換えが開始されるバイトの1から始まる位置であるため、上記の例と等価な行は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