ブック、シートの基本的なルール

ワークブック名を明示する

ワークブックを操作するときは、ブック名を明示して処理を記述しましょう。

 
次のプログラムのように、インデックス(番号)でワークブックを指定することもできます。でも、ユーザがファイルを開いた順番によって、対象となるファイルが変わってしまいます。
そのため、インデックスでのワークブックの指定は、できる限りしないようにしましょう。

 

アクティブブックは変数にセット

ユーザ操作などによって、アクティブブックは変化する可能性があります。

そのため、アクティブブックを操作する時は、アクティブブックを変数に格納し、変数に対して処理を行いましょう。

そうすることで、仮にアクティブブックが変化しても、変数の値は変化しないので、プログラムの処理は影響を受けません。

 

ワークシート名を明示する

ワークシートを操作するときは、シート名を明示して処理を記述しましょう。

 
次のプログラムのように、インデックス(番号)でワークシートを指定することもできますが、ユーザの操作でシートの順番は変わるので、対象シートも変わってしまいます。そのため、インデックスでのワークシートの指定は、できる限りしないようにしましょう。

 

アクティブシートは変数にセット

ユーザ操作などによって、アクティブシートは変化する可能性があります。

そのため、アクティブシートを操作する時は、アクティブシートを変数に格納し、変数に対して処理を行いましょう。

そうすることで、仮にアクティブシートが変化しても、変数の値は変化しないので、プログラムの処理は影響を受けません。

 

シート操作する時はブックから指定する

次のようにブックから指定しましょう。

 
次のように、シート名でいきなり指定すると、VBAがシートを探す対象ファイルはアクティブなブックとなります。ユーザ操作によってアクティブなブックは変化するので、対象シートが存在しないなどエラーが発生する可能性があります。

 

セル操作する時はブックとシートを指定する

セルを操作する時も、上で紹介した「シート操作」の考えと同じです。ブックとシートを指定しましょう。

 
次のように、いきなりRangeやCellsを使うと、アクティブなシートのセルが対象となるので、ユーザ操作によって書き込まれるシートが変化してしまう可能性があります。

 

POINT
今回のように、rangeの前に毎回ブック名、シート名を記述するとプログラムが見にくくなってしまいます。
そのため、ブック名とシート名の部分はwith句に記述して、見やすいプログラムにしましょう。

 

関連記事

タイトルとURLをコピーしました