シート名を設定するマクロの作成
繰り返す処理のもとになるプロシージャをマクロ記録で作成しましょう。マクロ記録用に新しいブックを開いて、ワークシート「Sheet1」のシート名を「東京支店」に設定する操作をマクロで記録すると、次のようにNameプロパティが「オブジェクト.プロパティ = 値」の構文で記述されます。
現在作成しているプロシージャに切り替えて、このステートメントを、繰り返し実行させたい「シート名を設定する処理」のところにコピーしておきます。この部分を、繰り返し処理のためにどう書き換えるのか。これが今回の大きなポイントです。
※マクロ記録用に開いたブックは、作業が終わったら保存せずに閉じておきましょう。 |
複数のブックを扱うマクロの重要ポイント
シート名の設定する処理を書き換える前に、整理しておくべき重要なポイントがあります。今回のように、マクロで扱うブックが複数の場合は、
■操作するのは、どちら側のブック上の要素なのか
■操作する時点で、どちら側のブックがアクティブなのか
ということを把握しておく必要があります。
今回の繰り返す処理では、ワークシート数が入力されているセルA5が「マクロを作成しているブック「Bool1.xls」上の要素、ワークシート「Sheet1」が「新しく作成されたブック」上の要素ということになります。また、ワークシートに名前を設定する時点では、新しく作成するブックがアクティブになっています。
そして、プロシージャ内で操作する要素に対して、それぞれ「どちらのブックの要素なのか」を記述します。このとき、シートについては「ブック.シート」、セルについては「ブック.シート.セル」といったように階層をたどって記述する必要があります。アクティブなブックは「ActiveBook」、アクティブではないブックは、「Workbooks("ブック名")」と記述できるので、今回の場合は、下図のように追記します。
なお、複数のブックを扱う場合、変数を使った作成方法もあり、実は、作成中のマクロの一部は、その考え方で作成しています。すべて、変数を使ってプログラムを作成するには、別なテクニックが必要になるので、次の機会に紹介します。
>それでは、シート名を設定する部分を書き換えていきましょう!