Mid関数
Mid関数 は受け取った文字列について、指定位置から指定文字数を抜き出します。
第 1 引数で抽出対象となる文字を指定します。数字、アルファベット、日本語のいずれでも指定することができます。戻り値は Variant 型となります。
第 2 引数で取り出す先頭位置を指定します。指定した数値が文字列の数を超えていると長さ 0 の文字列 "" を返します。
3 番目のオプション引数で、何文字取り出すかを指定します。この引数を省略した場合は開始位置から残り全ての文字を取り出します。
「私はチョコレートケーキが大好きです」という文字列から「チョコレート」という文字を取り出してみましょう。「チ」は文章の 3 番目、「チョコレート」は 9 文字の単語です。
Sub Mid_test()
Dim mystr As String
mystr = "私はチョコレートケーキが大好きです"
Debug.Print Mid(mystr, 3, 9)
End Sub
Mid と InStr を組合わせると、文字列から特定の文字に囲まれた部分を取り出したりもできます。次のコードは ( ) の中身を取り出すマクロです。
Sub Brackets()
Dim mystr As String
Dim x As Long, y As Long
mystr = "刑部(おさかべ)はマリちゃんの旧姓です"
x = InStr(mystr, "(")
y = InStr(mystr, ")")
' ( )の中身を取り出す
Debug.Print Mid(mystr, x + 1, y - x - 1)
End Sub
InStr は第 1 引数で渡した文字列について、第 2 引数で指定した文字列が何番目にあるかを返す関数です。変数 x に "(" の位置、y に ")" の位置を入れると、x + 1 が "(" の次の文字、y - x + 1 が ")" の文字数となります。それらを Mid関数の第 2 引数と第 3 引数に渡せば、( ) の中身を取り出せるという仕組みになっています。