更新日:、 作成日:

VBA 特殊文字と制御文字の一覧

はじめに

Excel VBA マクロの特殊文字と制御文字の一覧を紹介します。

vbTab からタブ文字を、vbCrLf から改行を入力できます。他にも特殊文字の定数が定義されています。

ダブルクォーテーションを入力するには "" のように 2 つ続けて入力します。1 つ目がエスケープ文字になります。これ以外にエスケープが必要な文字はありません。

Chr 関数」から、特殊文字を文字コードで入力できます。

Unicode 文字を扱うには「文字コードを変換や判定する」をご覧ください。

特殊文字と制御文字の一覧

VBA で定義されている特殊文字と制御文字の一覧です。すべて定数が定義されています。文字コードの列は「Chr 関数」で同じ文字を入力するときの値です。

特殊文字 文字コード 説明
vbBackChr(8)バックスペース
vbCrChr(13)キャリッジリターン
vbCrLfChr(13) & Chr(10)改行、vbCr と vbLf を結合した文字
vbFormFeedChr(12)フォームフィード、印刷の改ページ
vbLfChr(10)ラインフィード
vbNewLineChr(13) & Chr(10)改行、OS の改行コードに合わせた文字
vbNullCharChr(0)Null 文字、データーベースの NULL とは違う
vbNullString表せない初期化されていない文字、長さ 0 の文字、空文字とは違う
vbTabChr(9)タブ
vbVerticalTabChr(11)垂直タブ

改行文字が 2 種類ありますが、vbCrLf の方をよく使います。vbLf はエクセルのセル内で改行したときの改行文字としても使われます。

改行について詳しくは「文字列を改行する」をご覧ください。

エスケープ文字

ダブルクォーテーションを文字として入力するには "" のように 2 つ続けて入力します。1 つ目がエスケープ文字になります。Chr(34) でも入力できます。

これ以外にエスケープが必要な文字はありません。改行を \r\n のように入力することはできません。円マークはそのままの意味しか持ちません。

特殊文字を入力する

特殊文字や制御文字の定数を使用して入力できます。vbTab を入力して、タブ文字を入力できます。

Chr 関数」を使用して、その文字コードからも入力できます。

Dim s As String
s = vbTab
Debug.Print(s) '  、タブ文字

s = Chr(9)
Debug.Print(s) '  、タブ文字

s = """"
Debug.Print(s) ' "、ダブルクォーテーション

s = Chr(34)
Debug.Print(s) ' "、ダブルクォーテーション

s = "A""B"
Debug.Print(s) ' A"B

特殊文字の入力ができれば、通常の文字と同じように判定や置換、削除などができます。

文字コードを取得

Asc 関数」を使用して、文字コードを取得できます。この値を「Chr 関数」に渡して、その文字を入力できます。

Dim i As Integer
i = Asc(vbTab)
Debug.Print(i) ' 9、タブ文字

i = Asc("""")
Debug.Print(i) ' 34、ダブルクォーテーション

特殊文字を検索する

通常の文字列を検索する方法と同じです。

InStr 関数」を使用して、特殊文字の位置を検索できます。

Dim 文字列 As String
文字列 = "ABC" & vbCrLf & "DEF"

Dim 検索 As String
検索 = Chr(13) & Chr(10) ' vbCrLf

Dim i As Integer
i = 0

Do
    i = InStr(i + 1, 文字列, 検索) ' 0 以外が見つかった位置
    Debug.Print(i) ' 4 0
Loop Until i = 0
詳しくは「文字列を検索する」をご覧ください。

特殊文字を置換や削除する

通常の文字列を置換や削除する方法と同じです。

Replace 関数」を使用して、特殊文字を置換や削除できます。

Dim 文字列 As String
文字列 = "ABC" & vbCrLf & "DEF"

Dim 置換後 As String ' 置換後の文字、空文字なら削除される
Dim s As String

置換後 = "_"
s = Replace(文字列, vbCrLf, 置換後) ' 改行を _ に置換
Debug.Print(s) ' ABC_DEF

置換後 = ""
s = Replace(文字列, vbCrLf, 置換後) ' 改行を削除
Debug.Print(s) ' ABCDEF
詳しくは「文字列を置換する」をご覧ください。