サーチ…


備考

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.


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow