VBAでワークシートを指定する方法は3つある。
まず1つ目は、シートネームで指定する方法である。例えば、
ThisWorkbook.Worksheets("cial").Range("A1").Value = "aaa"
これは"cial"という名前のシートのA1セルに"aaa"と記入するコードになる。
2つ目は、シート番号で指定する方法である。例えば、
ThisWorkbook.Worksheets(2).Range("A1").Value = "aaa"
これは2枚目のシートのA1セルに"aaa"と記入するコードになる。
これら2つの方法は一般的によく使われている。しかし、弱点がある。シートネームを指定する場合、シートネームを変更した場合にはコードを変更しなければならないのである。また、シート番号で指定する場合は、シートの順番を変えた場合にはコードを変更しなければならないである。
そこで、3つ目の方法である。シートコードを使って指定する方法があるのだ。シートコードというのは、プロジェクトエクスプローラーに表示されているシートネームを囲うカッコの左側の部分である。
シートコードを使って書くとと次のようになる
Sheet2.Range("A1").Value = "aaa"
シートコードを使えば、シート名を変えても、シートの順番を変えてもコードを変更する必要がないのだ。
しかし、シートコードを使う方法も万能ではない。普通は触らないが、プロパティウィンドウからシートコードを変えることができてしまう。また、ブックを指定することができないので、他のブックのシートを指定するときには使えないという大きな弱点があるのだ。
シートを指定する3つの方法にはそれぞれ長所と短所がある。結局は、時と場合に応じて、適宜使い分けるしかないのだ。