動作検証バージョン:Windows版Excel(バージョン1809 ビルド10827.20181)
VBAのMid関数を使った、
セルの一文字目・先頭の文字を削除するExcelマクロをご紹介しています。
[スポンサードリンク]
同じことを、Rangeオブジェクトの子オブジェクトである、CharactersオブジェクトのDeleteメソッドを使ってもできます。
先頭文字を削除するサンプルマクロ
以下のSubプロシージャで、A1:A5セルの先頭文字列を削除できます。
Sub セルの先頭1文字を削除する()
Dim rng As Range
For Each rng In Range("A1:A5")
rng.Characters(Start:=1, Length:=1).Delete
Next
End Sub
Dim rng As Range
For Each rng In Range("A1:A5")
rng.Characters(Start:=1, Length:=1).Delete
Next
End Sub
サンプルマクロで行っている処理
Range.Charactersプロパティの、
引数StartとLengthの両方に「1」を指定すると、セルの先頭1文字を表すCharactersオブジェクトを取得できます。
取得したCharactersオブジェクトのDeleteメソッドを実行して、
1文字目を削除しています。
Mid関数を使った方法よりも、オブジェクト指向なコードだと感じます。
Range.Charactersプロパティの引数
Range.Charactersプロパティをご存知ない方向けに名前付き引数を使って、
rng.Characters(Start:=1, Length:=1).Delete
としていますが、標準引数を使った、
rng.Characters(1, 1).Delete
でも、それほど可読性は落ちないだろうと感じます。
ショートカットキー[Ctrl]+[I]でヒントも表示されますし、
コードの1行当たり文字数という観点では、
rng.Characters(1, 1).Delete
のほうが優れているとも感じます。
最終更新日時:2019-11-24 06:38
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » Charactersオブジェクト » Excel VBAで先頭の文字を削除する-Characters.Delete