mugaxのなんでも情報局

いろんな分野について発信していきます。

VBAによるワークシートの指定方法は3つある

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つの方法にはそれぞれ長所と短所がある。結局は、時と場合に応じて、適宜使い分けるしかないのだ。