伊田生活ブログのロゴ
HOME  >  勉強
カテゴリー : 勉強 - プログラミング
•VBA •Mid関数 •右から •Excel •マクロ


公開日:
最終更新日:

VBAで右からn番目の文字を抜き出す


img_2

VBAで右からn番目の文字を抜き出す方法について、考えます。


VBAで、ある文字列の任意の区間を抜き出す方法としては、Mid関数が有名です。以下に、Mid関数の使用例を示します。

'Option VBASupport 1

Sub test()

    myString = "ABCDEFG"

    tmp = Mid(myString, 3, 2)
    MsgBox tmp

End Sub
このコードを実行すると、下図のように、「CD」と表示されます。
img_1

このコードは、Mid(myString, 3, 2) の記述によって、「ABCDEFG」の左から数えて3文字目から、2個の文字を、切り抜いています。

このように、Mid関数は、「左からn文字目から、m個の文字を切り抜く」ことが可能です。


ここで、左からではなく、右から数えることを考えます。「右から数えてn番目の文字から、m個の文字を切り抜く」ことを行うサンプルコードを、以下に示します。

[サンプルコード]
'Option VBASupport 1

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」と表示されます。

img_2

#サンプルコードFunction midFromRight は、以下の処理を行います。

1. Right() で、文字の右からn文字を取得する。

例:
「ABCDEFG」の右から3文字を取得して、「EFG」となる。

2. Left() で、文字の左からm文字を取得する。

例:
「EFG」の左から2文字を切り抜いて、「EF」となる。

#サンプルコードでは、以下の記述によって、「文字列の右から数えて3番目から、2文字を切り抜く」という処理をおこなっています。

result = midFromRight(myString, 3, 2)


「右からn番目の文字から、文字をm個抜き出す」というVBAのサンプルコードをご紹介しました。

たとえば、「100.00」と「10.00」という2つの文字列の、それぞれ右から3文字目が小数点かどうか、チェックしたいとします。このとき、#サンプルコード midFromRight の呼び出しを、以下のように記述すれば、右から3文字目を、チェックすることができます。

result = midFromRight(myString, 3, 1)