【VBA】セル内の一部の文字だけを消す方法|Characters().Deleteの使い方

目次

はじめに

今回は、VBAを使ってセルの中の一部の文字だけを削除する方法について勉強しました。
使用環境は以下のとおりです。

  • 使用OS: Windows 10 Pro
  • バージョン: 20H2

背景

VBAプログラムで、セル内に入力されている文字列から特定の範囲だけを抽出・削除したい場面がありました。

最初はReplace関数を使って試行錯誤しましたが、思うように動作せず、
最終的に**Characters().Deleteメソッド**を使う方法にたどり着きました。

実際に行った処理

以下のコードで、狙った部分の文字を削除することができました。

Range("A1").Characters(0, 6).Delete

コードの解説

  • Range("A1")
    操作対象となるセルを指定しています。ここでは「A1セル」です。
  • .Characters(開始位置, 文字数)
    セル内の文字列のうち、
    • 開始位置から
    • 指定した文字数分だけ
      を対象に操作することができます。
  • .Delete
    指定した文字範囲を削除するメソッドです。

注意点

  • Characters(0, 6)の「0」は、実際には先頭の1文字目を指します。
    VBAのCharactersオブジェクトは1ベース(1からカウント開始)ですが、ここでは0で先頭を指定しても動作しました。
  • 「6」は、削除したい文字数を意味します。ここでは先頭から6文字を削除しています。

結果として、A1セルに「12文字」が入っていた場合、7文字目以降だけが残ります。

苦労した点

当初は、Replace関数を使って不要な文字列を削除しようと試みました。
しかし、Replace関数では「位置」ではなく「文字列の一致」をベースに処理するため、
位置指定で削除したい今回のようなケースには適していませんでした。

結果的に、Characters().Deleteメソッドを使用することで、狙った位置の文字を的確に削除することができました。

まとめ

  • セル内の一部文字だけを削除したい場合は、**Characters().Delete**を使用するとよい。
  • Characters(開始位置, 文字数)で、対象の範囲を細かく指定できる。
  • Replace関数は文字列一致で置換・削除するものであり、位置ベースの操作には向かない

今回の作業を通じて、セルの中身を部分的に操作するテクニックを習得することができました。
今後も、用途に応じた適切な関数・メソッドの使い分けを意識して、VBAスキルを磨いていきたいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次