文字列を操作する関数のひとつにMid関数がある。VBAエキスパート試験を受ける前にしっかり理解しておきたい関数だ。
基本的な使い方
Mid関数は、文字列を取り出す関数だ。引数には、取り出し元の文字列と取り出し開始位置、そして取り出す文字数を指定する。
【書式】
Mid(元の文字列, 開始位置, 文字数)
次のプロシージャはMid関数の使用例だ。「ExcelVBA」の2文字目から4文字分を取得して表示する。
'xcelと表示される
Sub Test()
Dim str As String
str = Mid("ExcelVBA", 2, 4)
MsgBox str
End Sub
引数の順番に注意したい。
○ Mid(元の文字列, 開始位置, 文字数)
× Mid(元の文字列, 文字数, 開始位置)
Left関数と同じような使い方ができる
Mid関数の第1引数(開始位置)に1を指定した場合、文字列の先頭から取り出す。Left関数と同じように、文字列先頭から指定文字分を取り出したいときに使える。
次のプロシージャはMid関数とLeft関数の比較だ。どちらの場合もメッセージボックスに「Excel」と表示される。
Sub Test1()
Dim str As String
str = Mid("ExcelVBA", 1, 5)
MsgBox str
End Sub
Sub Test2()
Dim str As String
str = Left("Excel VBA", 5)
MsgBox str
End Sub
文字列の先頭から取り出す場合、取り出し開始位置は0ではなく1だ。0を指定すると実行時エラーが発生する。
'実行時エラー
Sub Test()
Dim str As String
str = Mid("ExcelVBA", 0, 5)
MsgBox str
End Sub
取り出す文字数は省略できる
Mid関数の第3引数(取り出す文字数)は省略できる。書かなくてもエラーは発生しない。
Mid(元の文字列, 開始位置)
取り出す文字数を省略した場合、文字列の最後までを取得して返す。次のプロシージャは、文字列「ExcelVBA」の2文字目から最後までを取得して、メッセージボックスに表示する。
'xcelVBAと表示される
Sub Test()
Dim str As String
str = Mid("ExcelVBA", 2)
MsgBox str
End Sub
練習問題
次のプロシージャを実行したところ、メッセージボックスに「ABC」と表示された。空欄【1】に入る記述として正しいものはどれか。次の中から1つ選択しなさい。
Sub Lesson()
MsgBox 【 1 】
End Sub
- Mid("ABCDE", 3, 1)
- Mid("ABCDE", 1, 3)
- Mid(3, 1, "ABCDE")
- Mid(1, 3, "ABCDE")
正解を見る
2
コメント