この記事では、エクセルのVBA(マクロ)にて右からn文字を削除する方法について解説していきます。つまり、末尾・最後の何文字を消すことと同じ意味です。
VBAはとにかくコードの書き方を知る・自分で書いてみるのが上達のカギのため、この機会に覚えておくといいです。
それではいきましょう!
目次
VBAマクロにて右から1字削除(文字列)する方法【関数作成】
マクロにて右から何文字削除する方法として「1文字消す」サンプルを見ていきましょう。
VBAでカスタム関数を以下のように作ってみます。
1 2 3 4 5 6 7 |
Function RemoveLastChar(inputString As String) As String If Len(inputString) > 0 Then RemoveLastChar = Left(inputString, Len(inputString) - 1) Else RemoveLastChar = inputString End If End FunctionA |
Alt+F11にて、VBA画面を開き任意のモジュールに上のコードを貼り付け、保存しましょう。
このコードによって、RemoveLastChar(対象セル)という構文で右から1文字削除する関数ができました。
続いて、以下のサンプルにてVBAで右から1文字削除する関数を適用します。
上で作った通りに、=RemoveLastChar(対象セル)と出力したいセルに入れましょう。
ENTERで処理確定し、オートフィルでコピーすればVBAにて右から何文字削除(ここでは1文字)する操作が完了ですね。
VBAにて右から1文字削除する方法(何文字消す)【その2】
関数化させるのではなく、VBAのみで処理したい人もいると思います。
以下のマクロコードでは、右から1文字を消した文字列を隣の列に出力させるコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub RemoveLastCharFromSelectedCells() Dim targetCell As Range Dim updatedText As String For Each targetCell In Selection If Len(targetCell.Value) > 0 Then updatedText = Left(targetCell.Value, Len(targetCell.Value) - 1) Else updatedText = "" End If targetCell.Offset(0, 1).Value = updatedText Next targetCell End Subこ |
このコードをAlt + F11にてVBAの編集画面に貼付しましょう。
後は、上のサンプルにて該当セルを選択後に、Alt + F8にて該当マクロを選び、実行しましょう。
以下のように、右から1文字が隣の列に出力されました。
VBAにて右から何文字削除する方法(1文字消す)【その3:一括置換】
なお、隣のセルに出力させるのはなく、元の文字列に上書きしたい人もいることでしょう。
そんな場合は以下のコードを使用するといいです。
1 2 3 4 5 6 7 8 9 |
Sub RemoveLastCharFromSelectedCells() Dim targetCell As Range For Each targetCell In Selection If Len(targetCell.Value) > 0 Then targetCell.Value = Left(targetCell.Value, Len(targetCell.Value) - 1) End If Next targetCell End Sub |
以下が実行結果です。
なお、このコードの場合では、元の文字列が消えるため、コードに誤りがある場合は取り返しがつかなくなるケースもあります。
なので、きちんとバックアップを取った上で、処理しましょう。
まとめ VBAで右から何文字を削除する方法【最後、末尾を消す:右から1文字消す:マクロ】
ここでは、VBAで右からn文字を削除(何文字)する方法【最後、末尾を消す:右から1文字消す:マクロ】について解説しました。
マクロはとにかく慣れが大切。
一緒にエクセルを使いこなせるようになり、もっと効率よく生きていきましょう(^^)/