マクロの記録でテーブルデータを全てクリアする方法

どうしてもマクロの記録だけでなんとかしたいサトウヨシヒロです。

テーブルのすべての行のデータを削除するには、テーブルのすべての行を選択して右クリックして行の削除をする形になります。

これをマクロで記録すると、1行ずつ削除するのを、存在している行数の分だけ何度も削除していくという内容が記録されます。

100行削除すれば100行分の削除する動作が記録されます。

しかしこれでは、500行削除したいとき、十分に削除されないことがおきます。

70行削除したいときでは、 30行分余計に削除することになるのですが、データが存在しない状態では行の削除はエラーになります。

このようにマクロの記録でテーブルデータを削除するのはちょっと困難です。

そこで今アクティブセルになっているセルが属しているテーブルに対して、データ個数にかかわらずデータを削除するVBAを使った方法は以下のとおりあるのですが、それはマクロの記録ではできないのでVBAを操作するというハードルが少し高くなります。

Selection.ListObject.DataBodyRange.Delete

実は、上記のVBAでは、データが1件もなかった時に実行するとデータがないエラーが発生するので、Selectionに対し、ダミーデータを入力してから実行するのが安全です。

このくらいの要素であれば、やってもいいレベルかもしれませんが、自作するにしても記録したマクロを改造するにしても、作ったり改造したりしたものが正確に動いているかの動作チェックにスキルと時間がかかりますので、できるだけマクロの記録だけで対応できないかと思い考えた方法があります。

  1. データを全て削除したいテーブルのどれかの項目名をクリックします。
  2. テーブルデザインタブでテーブルのサイズ変更で、1行だけのテーブルサイズに変更します。
  3. テーブルから外れた2行目からのデータを多めの行数分選択して、Deleteキーでクリアします。
  4. 1行だけ残ったテーブルの行を右クリックして、削除の中の行の削除をします。

このステップであれば、行数にかかわらずマクロの記録で、テーブルの全データを削除させることができます。

こんなVBAが記録されました。

サトウヨシヒロ

Excelを中心としたMicrosoft Officeの魔法使い。
仙台市在住のフリーランスのパソコンインストラクターです。
1969年1月生まれ。
Excelを黎明期から30年近く使っています。Wordも使えます。
出版社様と一緒にExcelの情報発信もしています。
最近は羊に夢中です。
2020年は令和時代のExcelの使い方と教え方を勉強しています。

Twitterでも業務で使える便利なOffice技をめっちゃつぶやくツイッタラーです。@yosatonet

コメントを残す

メールアドレスが公開されることはありません。