VBA(Visual Basic for Applications)は、ExcelやAccessなどで利用されるマクロ機能のベースとなるプログラミング言語です。中でも文字列を扱う処理は、業務効率化の中核を担います。その中で頻出するのが「Mid関数」です。
本記事では、Mid関数の基本的な使い方から応用的な活用例までを丁寧に解説します。VBA初心者の方にもわかりやすい内容になっていますので、ぜひ最後までご覧ください。
VBAにおけるMid関数は、文字列から一部分を抽出するために使われる関数です。基本的な構文は次のようになります。
Mid(文字列, 開始位置, 文字数)
例えば、次のコードを見てみましょう。
Dim str As String
str = Mid("ABCDEFG", 2, 3)
' 結果は "BCD"
このように、「ABCDEFG」という文字列の2文字目から3文字分を取り出して、「BCD」が取得されます。
まずは基本的な使い方から見ていきましょう。
Sub MidSample1()
Dim original As String
Dim result As String
original = "こんにちは世界"
result = Mid(original, 4, 2)
MsgBox result ' 出力は「ちは」
End Sub
この例では、「こんにちは世界」という文字列の4文字目から2文字を取り出しています。結果として「ちは」が表示されます。
Mid
関数の第3引数(文字数)を省略すると、指定した開始位置から最後までの文字列が取り出されます。
Sub MidSample2()
Dim text As String
text = Mid("Visual Basic", 8)
MsgBox text ' 出力は「Basic」
End Sub
このように、第3引数を省略することで、残りのすべての文字を取得できます。処理を簡潔に書ける便利な使い方です。
Mid
関数は変数との組み合わせでもよく使用されます。実際の処理では、ユーザーが入力した文字列やセルから読み込んだデータを対象に使うことが多いです。
Sub MidSample3()
Dim userInput As String
userInput = InputBox("名前を入力してください") ' 例:山田太郎
Dim familyName As String
familyName = Mid(userInput, 1, 2)
MsgBox "名字は " & familyName & " です。"
End Sub
このように、ユーザーからの入力データに対して文字列を切り出す処理は実務でも頻出します。
VBAでは関数としてのMidだけでなく、「Midステートメント」として使うこともできます。これは、文字列の一部分を置き換えるという使い方です。
Mid(対象文字列, 開始位置, 文字数) = 置き換える文字列
Sub MidReplaceSample()
Dim str As String
str = "ABCDEF"
Mid(str, 2, 3) = "123"
MsgBox str ' 出力は「A123EF」
End Sub
このように、2文字目から3文字分(つまり「BCD」)を「123」に置き換えています。
Mid関数を使う際に注意すべきポイントがいくつかあります。
MsgBox Mid("ABC", 5) ' 出力は ""
MsgBox Mid("ABC", 2, 5) ' 出力は "BC"
指定した文字数が足りなくても、可能な部分だけが返されます。
VBAを使ってExcelシートのデータを操作することは非常に多いです。Mid関数を使えば、セルの文字列の中から必要な部分だけを取り出して別セルに出力することもできます。
Sub MidExcelSample()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim data As String
data = ws.Range("A1").Value
ws.Range("B1").Value = Mid(data, 3, 2)
End Sub
この例では、A1セルの文字列の3文字目から2文字をB1セルに出力します。たとえば、A1に「東京都千代田区」と入力されていれば、B1には「京都」が入ります。
複数のセルに対して一括でMid関数を適用することで、大量のデータからパターン的に情報を取り出すことが可能になります。
Sub MidLoopSample()
Dim i As Integer
For i = 1 To 10
Cells(i, 2).Value = Mid(Cells(i, 1).Value, 1, 3)
Next i
End Sub
このマクロは、1列目の1~10行目の文字列から先頭3文字を取り出し、2列目に書き出します。
VBAのMid関数は、文字列を「取り出す」「置き換える」といった操作がシンプルに行える強力な関数です。業務の自動化やデータ処理において欠かせない存在と言えるでしょう。
初心者の方はまず、基本的な取り出しの使い方を覚え、慣れてきたら置き換えやセルデータへの応用にも挑戦してみてください。Mid関数を自在に使いこなせれば、VBAスキルが一段とアップすること間違いなしです!