VBA
文字列リテラル - エスケープして印刷できない文字と行継続
サーチ…
備考
VBAでの文字列リテラルの割り当ては、IDEの制限と現在のユーザーの言語設定のコードページによって制限されています。上記の例は、エスケープされた文字列、特別な、印刷できない文字列、および長い文字列リテラルの特別なケースを示しています。
特定のコードページに固有の文字を含む文字列リテラルを割り当てる場合、別個のUnicodeリソースファイルから文字列を割り当てることによって、国際化の問題を考慮する必要があります。
"文字をエスケープする
VBAの構文は、文字列リテラルは、内に表示されている必要"
マーク、ので、あなたの文字列は引用符を含める必要があるとき、あなたはエスケープする必要があります/プリペンド"
余分の文字"
VBAは、あなたが意図していることを理解するように""
であることを"
文字列として解釈される。
'The following 2 lines produce the same output
Debug.Print "The man said, ""Never use air-quotes"""
Debug.Print "The man said, " & """" & "Never use air-quotes" & """"
'Output:
'The man said, "Never use air-quotes"
'The man said, "Never use air-quotes"
長い文字列リテラルの割り当て
VBAエディタでは1行に1023文字しか使用できませんが、通常はスクロールせずに最初の100〜150文字しか表示されません。長い文字列リテラルを割り当てる必要があるが、コードを読みやすくしたい場合は、行継続と連結を使用して文字列を割り当てる必要があります。
Debug.Print "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
"Integer hendrerit maximus arcu, ut elementum odio varius " & _
"nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
"um ut tellus."
'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.
VBAでは、行数を制限して使用することができます(実際の数は継続ブロック内の各行の長さによって異なります)。文字列が非常に長い場合は、連結を割り当てて再割り当てする必要があります。
Dim loremIpsum As String
'Assign the first part of the string
loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
"Integer hendrerit maximus arcu, ut elementum odio varius "
'Re-assign with the previous value AND the next section of the string
loremIpsum = loremIpsum & _
"nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
"um ut tellus."
Debug.Print loremIpsum
'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.
VBA文字列定数の使用
VBAは、次のような特殊文字の文字列定数の数を定義します。
- vbCr:キャリッジリターンCスタイルの言語では "\ r"と同じです。
- vbLf:Line-Feed 'Cスタイルの言語では "\ n"と同じです。
- vbCrLf:改行と改行(Windowsの改行)
- vbTab:タブ文字
- vbNullString: ""のような空の文字列
これらの定数を連結やその他の文字列関数とともに使用して、特殊文字で文字列リテラルを構築することができます。
Debug.Print "Hello " & vbCrLf & "World"
'Output:
'Hello
'World
Debug.Print vbTab & "Hello" & vbTab & "World"
'Output:
' Hello World
Dim EmptyString As String
EmptyString = vbNullString
Debug.Print EmptyString = ""
'Output:
'True
使用vbNullString
と同等の値よりも良いプラクティスと考えている""
によるコードがコンパイルされる方法の違いに。文字列は、割り当てられたメモリ領域へのポインタを介してアクセスされ、VBAコンパイラは、 vbNullString
を表すためにヌルポインタを使用するほどスマートvbNullString
。リテラル""
は、String型のVariantであるかのようにメモリに割り当てられ、定数の使用をより効率的にします。
Debug.Print StrPtr(vbNullString) 'Prints 0.
Debug.Print StrPtr("") 'Prints a memory address.