VBAで右からn番目の文字を抜き出す
VBAで右からn番目の文字を抜き出す方法について、考えます。
• はじめに
VBAで、ある文字列の任意の区間を抜き出す方法としては、Mid関数が有名です。以下に、Mid関数の使用例を示します。
Sub test()
myString = "ABCDEFG"
tmp = Mid(myString, 3, 2)
MsgBox tmp
End Sub
このコードは、Mid(myString, 3, 2)
の記述によって、「ABCDEFG」の左から数えて3文字目から、2個の文字を、切り抜いています。
このように、Mid関数は、「左からn文字目から、m個の文字を切り抜く」ことが可能です。
• 右から数えるには?
ここで、左からではなく、右から数えることを考えます。「右から数えてn番目の文字から、m個の文字を切り抜く」ことを行うサンプルコードを、以下に示します。
[サンプルコード]Sub a()
myString = "ABCDEFG"
result = midFromRight(myString, 3, 2)
MsgBox result
End Sub
Function midFromRight(buf As String, fromPos As Integer, cNum As Integer) As String
cutted1 = Right(buf, fromPos)
cutted2 = Left(cutted1, cNum)
midFromRight = cutted2
End Function
このコードの Sub a()
を実行すると、下図のように、「EF」と表示されます。
コード解説
#サンプルコードの Function midFromRight
は、以下の処理を行います。
1. Right()
で、文字の右からn文字を取得する。
「ABCDEFG」の右から3文字を取得して、「EFG」となる。
2. Left()
で、文字の左からm文字を取得する。
「EFG」の左から2文字を切り抜いて、「EF」となる。
#サンプルコードでは、以下の記述によって、「文字列の右から数えて3番目から、2文字を切り抜く」という処理をおこなっています。
result = midFromRight(myString, 3, 2)
• まとめ
「右からn番目の文字から、文字をm個抜き出す」というVBAのサンプルコードをご紹介しました。
右からn番目の1文字を切り抜く方法
たとえば、「100.00」と「10.00」という2つの文字列の、それぞれ右から3文字目が小数点かどうか、チェックしたいとします。このとき、#サンプルコードの midFromRight
の呼び出しを、以下のように記述すれば、右から3文字目を、チェックすることができます。
result = midFromRight(myString, 3, 1)