最後の文字だけ削除する

中級VBA

最後の文字だけ削除する

 ExcelVBAの文字列関数には最後の1文字を削除するという関数は用意されていません。
 なければ作ろうという事になりますが、1行で書くことができます。

 str = Left(str, Len(str) – 1)

 仕組みとしては2つの関数を使います。
 一つ Len関数です。こちらは文字列の数を返してくれます

 もう一つは Left関数です。こちらは文字列数値を引数に取り、左(先頭)から数値の分だけ文字列を取り出してくれます

尚、最後の文字を調べてから削除したければ、Right(文字列,1) で参照できます。

サンプルコード

 以下のサンプルは、カンマ区切りで文字列を作りたい時、Forループで回すとどうしても最後に余計なカンマがついてしまうため上記の方法で最後の文字(カンマ)を削除しています。

'最後の文字だけ削除する
Sub macro()
    Dim str As String
    Dim i As Long
    
    For i = 1 To 6
        str = str & i & ","
    Next i
    
    str = Left(str, Len(str) - 1)
    
    Debug.Print str   '「1,2,3,4,5,6」と表示される
End Sub

先頭の文字を削除する

 同じような方法でRight関数を使えば先頭の文字を削除する事が出来ます。

'先頭の文字を削除する
Sub macro2()
    Dim str As String
    Dim i As Long
    
    For i = 1 To 6
        str = str & "," & i    '文字の追加方法を変更しています。
    Next i
    
    str = Right(str, Len(str) - 1)
    
    Debug.Print str   '「1,2,3,4,5,6」と表示される
End Sub

最後に

 今回の方法は汎用的によく使われますので覚えておくと便利です。
 今回使った、LenLeftRight関数には、LenBLeftBRightB という Bの付いた関数もあります。
 こちらはバイト数を返してくれるのですが、殆ど使いませんので必要になったら調べるというスタンスで良いと思います。
 
 特に初心者の方は、知識を詰め込んでいくのではなく、今回のような基本的な関数をマスターして出来る事を増やしていく方が良いでしょう。

タイトルとURLをコピーしました