読者です 読者をやめる 読者になる 読者になる

ぼくLog

子持ち、車持ち、マンション持ちの僕の日常を綴ります。車と、ラクをしたい一心で覚えたエクセルVBAを中心になりそうです。

ワークシートの特定にはCodeNameを使え|エクセルVBA

ワークシートに CodeName を設定すればいろいろ捗る


まずは、CodeName の設定方法から。

例えば「メイン」と名前を付けたワークシートをActiveにした状態で、VBEのプロパティウィンドウの「(オブジェクト名)」を見ると、デフォルトでは Sheet1 などが入っています。

f:id:yt4u:20160617234920j:plain

これが CodeName と言われるものです。


この CodeName を「wsMain」としてやれば、VBAのコード上で「wsMain」がそのシートを示すことになります。

よって、次の2つは同じ動作をします。

Sub  サンプル1()

  wsMain.Activate

End Sub


Sub  サンプル2()

  Worksheets("メイン").Activate

End Sub


CodeName を使うメリットはシート名の変更の影響を受けない点です。

例えば、

  Worksheets("メイン").Activate

を使っていると、シート名の変更に応じて書き換えの必要が出てきます。

シート名を一度命名して、以降一切変更することがなければ、それでも構わないのですが、いろいろと作りこんでいくうちに、シート名を変えたくなることなんてよくあること。


シート名を変更する都度、VBAのコードを見なおしたり、置換を使ってシート名を変更したりするのって、案外気を使うものですよね。


なので、最初から CodeName を使うのがオススメです。


コードを書くためにキーを打つ量を考えてみても、

  Worksheets("メイン").Activate

とするよりも

  wsMain.Activate

とした方が、打ち込む量は断然少なくなりますよね。