Sub TEST1()
'左から3文字切り出し
MsgBox Left("あいうえお", 3)
End Sub
『Left(文字列, 文字数)』で文字列を左から切り出せます。
文字列の左から3文字を切り出すコードになっています。
文字列『あいうえお』の左から3文字切り出すコードを実行してみます。
このようになります。
左から3文字切り出し
左から3文字『あいう』が切り出せました。
簡単ですね。
Leftのイメージ
Leftは左から特定の文字数を切り出すことができます。
イメージはこんな感じです。
左の1文字目から3文字分切り出すとかに使えます。
実用例
ではLeftはどのように使うか、例をご紹介します。
Leftは文字数制限などに使えるかなと思います。
VBAコードの流れはこちらです。
値変更で実行するイベントプロシージャを作成
変更されたセルがA1セルかを判定
セルの値が3文字を超えるかを判定
Leftを使って3文字だけ切り出す
文字数制限のVBAコードです。
'ワークシートの値が変更されたときに実行
Private Sub Worksheet_Change(ByVal Target As Range)
'変更されたセルが1行1列目の場合
If Target.Row = 1 And Target.Column = 1 Then
'文字数が3を超える場合
If Len(Cells(1, 1)) > 3 Then
'文字数を3文字にする
Cells(1, 1) = Left(Cells(1, 1), 3)
End If
End If
End Sub
実行してみます。
セルに5文字を入力してみます。
5文字入力してみる
Leftを使って3文字に制限しているので5文字入力しても3文字に制限されます。
3文字に制限される
Leftを使って3文字『あいう』に制限できました。
文字列を左から切り出しできるので文字数制限に使いやすいです。
VBAで文字列を右から切り出し(Right)
VBAで文字列を右から切り出すRightについて説明します。
Right使い方
文字列を右から切り出すRightのVBAコードです。
Sub TEST2()
'右から3文字切り出し
MsgBox Right("あいうえお", 3)
End Sub
Sub TEST3()
'左の3文字目から2文字切り出し
MsgBox Mid("あいうえお", 3, 2)
End Sub
Midの書き方は『Mid(文字列, 位置, 文字数)』というように記載します。
このVBAコードでは左から3番目の文字から2文字を切り出しています。
こんな結果になります。
位置と文字数を指定して切り出した結果
左から3番目の文字から2文字ですので『うえ』が切り出されました。
Midのイメージはこんな感じです。
位置と文字数を指定するイメージ
Midでは好きな位置から好きな文字数切り出せます。
位置だけを指定して切り出し
もう一つの方法でMidは3つ目の引数を省略できます。
3つ目の引数を省略すると好きな位置から最後までを切り出すことができます。
VBAコードはこんな感じです。
Sub TEST4()
'左の3文字目から最後まで切り出し
MsgBox Mid("あいうえお", 3)
End Sub
『Mid(文字列, 位置)』というように記載します。
3つめの引数を省略すると3文字目から最後までを切り出せます。
指定した位置から最後までを切り出す
文字列『あいうえお』の3文字目から最後までなので『うえお』が切り出されています。
Midの3つ目の引数を省略した際のイメージです。
指定した位置から最後までを切り出すイメージ
例えば次のような文字列を切り出したい場合は引数を省略すると便利です。
123-あいうえお
456-かきく
789-さしすせそたち
最初の4文字の長さが同じでそのあとの文字列を取得したい場合です。
実用例
実用例です。
カッコで囲まれた中の文字列を取得したい。といった場合に使えます。
例えばこんな文字列です。
あい(123)うえお
このカッコ内の文字列を取得にMidが使えます。
VBAコードは少し工夫が必要です。
手順としては
『(』の位置を探す
『)』の位置を探す
『(』と『)』の間の文字列をMidで取得する
というような流れです。
Sub TEST5()
Dim A
A = "あい(123)うえお"
Dim B, C
B = InStr(A, "(") '「"("」の位置を取得
C = InStr(A, ")") '「")"」の位置を取得'カッコ内の文字列を取得
MsgBox Mid(A, B + 1, C - B - 1)
End Sub