ミスを減らして長い操作をマクロに記録するには
マクロの良い点は、VBAを知らなくてもボタン一つで行った操作をそのままコマンドとして記録してくれる点です。
一方で、その操作の最中にミスや余計な操作をするとそれがそのまま記録される所が難点です。
記録する操作が長ければ長いほど、記録したくない操作も記録されがちです。
そこで長い操作をマクロに記録するときは、分割して短い操作ごとにマクロに記録し、最後にそれらのマクロを順次実行して一つのマクロに記録します。
- 長い操作を短い操作に分割する(例:操作を5分割する)
- 分割した短い操作ごとにマクロに記録する(例:マクロ1に分割その1を、マクロ2に分割その2を記録する)
- 2で記録したマクロを順次実行し、一つのマクロに記録する(マクロAにマクロ1、マクロ2、マクロ3・・・を実行して記録する)
では、具体的にやってみましょう。
今回記録する操作は、ピボットテーブルで次の3つの表を作成し印刷することです。
- 県別の年齢分布表
- 性別別の年齢分布表
- 既婚未婚別の年齢分布表
まず、県別の年齢分布表を作成し印刷するまでをマクロに記録します。マクロの記録のしかたについては『マクロの記録と実行』をご覧ください。
注意点はピボットテーブルを作成する前に必ずピボットテーブルの〔クリア〕ボタンをクリックすることです。
これを行う理由は、例えばピボットテーブルαのフィールドを変更してピボットテーブルβを作成した場合、そのマクロはピボットテーブルαなしで実行すると機能しないからです。
次に、〔クリア〕ボタンをクリックして性別別の年齢分布表の作成と印刷をマクロに記録します。
最後に、〔クリア〕ボタンをクリックして既婚未婚別の年齢分布表の作成と印刷をマクロに記録します。
これで短い操作のマクロが3個作成できました。これらを一つのマクロに統合します。
マクロ名「年齢分布表の印刷」に記録します。
マクロの記録を開始したら、県別→性別→既婚未婚別とマクロを実行し、マクロの記録を終了します。
これで分割した短い操作のマクロが一つのマクロに統合できました。モジュールをみると各マクロの実行が記録されていることが分かります。
このように長い操作をマクロに記録するときは、操作を分割して短い操作ごとにマクロを記録し、最後にひとつのマクロに統合するとミスが少なくなります。試してみてください。
あと念のためですが、今回作成したマクロにはピボットテーブルの〔データベースの変更〕が含まれていません。データベースを追加あるいは削除した場合は手動で〔データベースの変更〕ボタンをクリックして領域を変更してから今回作成したマクロを実行してください。