Mid関数のポイント

文字列を操作する関数のひとつにMid関数がある。VBAエキスパート試験を受ける前にしっかり理解しておきたい関数だ。

基本的な使い方

Mid関数は、文字列を取り出す関数だ。引数には、取り出し元の文字列と取り出し開始位置、そして取り出す文字数を指定する。

【書式】
Mid(元の文字列, 開始位置, 文字数)

次のプロシージャはMid関数の使用例だ。「AccessVBA」の2文字目から4文字分を取得して表示する。

Sub Test()
    Dim str As String
    str = Mid("AccessVBA", 2, 4)
    MsgBox str
End Sub

引数の順番に注意したい。

○ Mid(元の文字列, 開始位置, 文字数)
× Mid(元の文字列, 文字数, 開始位置)

Left関数と同じような使い方ができる

Mid関数の第1引数(開始位置)に1を指定した場合、文字列の先頭から取り出す。Left関数と同じように、文字列先頭から指定文字分を取り出したいときに使える。

次のプロシージャはMid関数とLeft関数の比較だ。どちらの場合もメッセージボックスに「Access」と表示される。

Sub Test1()
    Dim str As String
    str = Mid("AccessVBA", 1, 6)
    MsgBox str
End Sub
Sub Test2()
    Dim str As String
    str = Left("AccessVBA", 6)
    MsgBox str
End Sub

文字列の先頭から取り出す場合、取り出し開始位置は0ではなく1だ。0を指定すると実行時エラーが発生する。

'実行時エラー
Sub Test()
    Dim str As String
    str = Mid("AccessVBA", 0, 6)
    MsgBox str
End Sub

取り出す文字数は省略できる

Mid関数の第3引数(取り出す文字数)は省略できる。書かなくてもエラーは発生しない。

Mid(元の文字列, 開始位置)

取り出す文字数を省略した場合、文字列の最後までを取得して返す。次のプロシージャは、文字列「AccessVBA」の2文字目から最後までを取得して、メッセージボックスに表示する。

Sub Test()
    Dim str As String
    str = Mid("AccessVBA", 2)
    MsgBox str
End Sub

練習問題

次のプロシージャを実行したところ、メッセージボックスに「ABC」と表示された。空欄【1】に入る記述として正しいものはどれか。次の中から1つ選択しなさい。

Sub Lesson()
    MsgBox 【 1 】
End Sub

  1. Mid(“ABCDE”, 3, 1)
  2. Mid(“ABCDE”, 1, 3)
  3. Mid(3, 1, “ABCDE”)
  4. Mid(1, 3, “ABCDE”)

正解を見る

2

コメント