Excel2013 マクロ講座 68回

先頭や末尾のスペースだけ削除する

空白を削除するというと、ワークシート関数のTrim関数が思い浮かびますが、
Trim関数の場合は先頭と末尾の空白を削除し、さらに文字列中の連続する空白を1つだけにして残りを削除します。
便利な関数ですが、先頭(左)の空白だけ削除したいとか、末尾(右)の空白だけを削除したいという場合には使えません。 そこで、今回は、文字列の先頭や末尾の空白だけ削除するマクロを作ります。
(サンプルファイルは、こちらから マクロ68回サンプルデータ

先頭(左)の空白だけ削除

VBAには、文字列から先頭のスペースを削除するLTrim関数と、末尾のスペースを削除した文字列を返すRTrim関数があります。 もちろん、先頭と末尾の空白をどちらも削除するには、Trim関数を使用することができます。
文字列の先頭や末尾のスペースだけ削除するマクロ1
LTrim関数、RTrimL関数、Trim関数の引数には文字列を指定します。
文字列の先頭や末尾のスペースだけ削除するマクロ2
B2セルの先頭の空白を削除するコードは、
Sub セルの先頭の空白を削除()
    Dim myStr As String
    myStr = Selection.Value
    Selection.Value = LTrim(myStr)
End Sub
    
B2セルを選択して実行すると、先頭の空白が削除されます。
文字列の先頭や末尾のスペースだけ削除するマクロ3

任意の複数セル範囲の先頭の空白を削除する

ただし、任意の複数セル範囲の先頭の空白を削除するには、おなじみのFor Each~Nextステートメントで、ひとつずつセルを処理します。 変数には、わかりやすいように日本語でそのままセルと宣言します。慣れている場合は半角英の1文字でcなどで良いでしょう。
文字列の先頭や末尾のスペースだけ削除するマクロ4
コードは次のようになります。
Sub 任意の複数セルの先頭の空白を削除()
    Dim セル As Range
    Dim myStr As String
    For Each セル In Selection
      myStr = セル.Value
      セル.Value = LTrim(myStr)
    Next セル
End Sub
    
先頭の空白を削除したいセル範囲を選択してマクロを実行します。
文字列の先頭や末尾のスペースだけ削除するマクロ5
選択範囲の先頭の空白が削除されました。
文字列の先頭や末尾のスペースだけ削除するマクロ6
選択範囲の末尾の空白だけを削除したければ、RTrim関数を使ってください。
Sub 任意の複数セルの末尾の空白を削除()
    Dim セル As Range
    Dim myStr As String
    For Each セル In Selection
      myStr = セル.Value
      セル.Value = RTrim(myStr)
    Next セル
End Sub
    
スポンサーリンク
スポンサーリンク