どうしてもマクロの記録だけでなんとかしたいサトウヨシヒロです。
テーブルのすべての行のデータを削除するには、テーブルのすべての行を選択して右クリックして行の削除をする形になります。
これをマクロで記録すると、1行ずつ削除するのを、存在している行数の分だけ何度も削除していくという内容が記録されます。
100行削除すれば100行分の削除する動作が記録されます。
しかしこれでは、500行削除したいとき、十分に削除されないことがおきます。
70行削除したいときでは、 30行分余計に削除することになるのですが、データが存在しない状態では行の削除はエラーになります。
このようにマクロの記録でテーブルデータを削除するのはちょっと困難です。
そこで今アクティブセルになっているセルが属しているテーブルに対して、データ個数にかかわらずデータを削除するVBAを使った方法は以下のとおりあるのですが、それはマクロの記録ではできないのでVBAを操作するというハードルが少し高くなります。
Selection.ListObject.DataBodyRange.Delete
実は、上記のVBAでは、データが1件もなかった時に実行するとデータがないエラーが発生するので、Selectionに対し、ダミーデータを入力してから実行するのが安全です。
このくらいの要素であれば、やってもいいレベルかもしれませんが、自作するにしても記録したマクロを改造するにしても、作ったり改造したりしたものが正確に動いているかの動作チェックにスキルと時間がかかりますので、できるだけマクロの記録だけで対応できないかと思い考えた方法があります。
- データを全て削除したいテーブルのどれかの項目名をクリックします。
- テーブルデザインタブでテーブルのサイズ変更で、1行だけのテーブルサイズに変更します。
- テーブルから外れた2行目からのデータを多めの行数分選択して、Deleteキーでクリアします。
- 1行だけ残ったテーブルの行を右クリックして、削除の中の行の削除をします。
このステップであれば、行数にかかわらずマクロの記録で、テーブルの全データを削除させることができます。
こんなVBAが記録されました。
コメント