[VBA] Mid関数

Mid関数

 Mid関数 は受け取った文字列について、指定位置から指定文字数を抜き出します。

 Mid(文字列, 開始位置, [取り出す文字の長さ])

 第 1 引数で抽出対象となる文字を指定します。数字、アルファベット、日本語のいずれでも指定することができます。戻り値は Variant 型となります。

 第 2 引数で取り出す先頭位置を指定します。指定した数値が文字列の数を超えていると長さ 0 の文字列 "" を返します。

 3 番目のオプション引数で、何文字取り出すかを指定します。この引数を省略した場合は開始位置から残り全ての文字を取り出します。

 「私はチョコレートケーキが大好きです」という文字列から「チョコレート」という文字を取り出してみましょう。「チ」は文章の 3 番目、「チョコレート」は 9 文字の単語です。

'Mid サンプルコード [1]

Sub Mid_test()

  Dim mystr As String

  mystr = "私はチョコレートケーキが大好きです"

  Debug.Print Mid(mystr, 3, 9)

End Sub

チョコレートケーキ

 Mid と InStr を組合わせると、文字列から特定の文字に囲まれた部分を取り出したりもできます。次のコードは ( ) の中身を取り出すマクロです。

'Mid サンプルコード [2]

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 引数に渡せば、( ) の中身を取り出せるという仕組みになっています。

関連コンテンツ
スポンサードリンク

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください