PR

 第10回「削除するシートをマクロで自動バックアップ」では、削除したシートをバックアップ用に保存するマクロの概要を紹介しました。引き続き今回は、マクロの内容と、その中で使われる基本テクニックについて解説していきたいと思います。

 これまで紹介してきたサンプルに比べ、シートをバックアップ保存するマクロは処理内容がやや煩雑で、記述するコードも格段に多くなっています。なんだか本格的にプログラミングをしている気分になってきますね。本当ならすぐにでもコードを入力し、プログラムの作成に取り掛かりたくなるかもしれません。しかし、マクロ作成になれないうちは、どのようなマクロを作りたいのかということを念頭におき、処理内容を段階的にまとめて整理する準備作業を、ぜひ行っていただきたいのです。

 特にこれからご紹介する「もし○○だったらこうして、××だったらこうする」という条件によって処理を分岐するようなプログラムでは、作業の流れ図を書いておくことで効率よくマクロを作成できます。また、マクロが正しく動かない場合でもその原因を突き止めやすくなるという利点もあります。

マクロで実現したい処理の流れを整理する

 「作業の流れ図」といっても、難しく考える必要はありません。専門家が利用するフローチャートという処理の流れ図では、この状態はこの図を使って表す……などという細かなルールがあるのですが、あまり細かいことを気にする必要はありません。マクロの処理の流れがわかるように、図解化されていればそれでいいのです。

 たとえば、今回のマクロの処理の流れを図解化して整理したものが図1です。上から順番にどんな処理をしていくかを4つのブロックにまとめてあります。特に最初の2つのブロックでは、シートの条件を判断して、ブックのシート数が1枚の場合とシートの削除をキャンセルする場合には、マクロを途中終了するようにしています。頭の中に処理の流れを作るよりも、多少面倒でもこうして流れ図を作成することで、処理内容が明確になり、プログラム作成の大きな手助けとなるはずです。

11-1.jpg図1 マクロで処理する流れを整理する

 流れ図には4つの処理ブロックがありますが、上から順番に、文末に掲載しているコードの4つのブロックに対応しています。最初のブロック(1)の前には「変数の宣言」というブロックがあるのですが、これについては次回じっくりと解説をすることにします。

 今回注目していただきたいのは、最初のブロック(1)と二番目のブロック(2)にはいずれも、「If~Then」という条件判断を行う処理のキーワードが含まれている点です。エクセルの関数にもIF関数がありますが、目的はこれとまったく同じです。ただExcel VBA流の作法にのっとり条件分岐の式を記述する必要があります。