VBA講座:シートの3つの指定方法

たった1秒で仕事が片づく Excel自動化の教科書

『たった1秒で仕事が片づくExcel自動化の教科書』(技術評論社)にて、
紙面の都合で書けなかった詳細をこちらで解説します。

■シートの3つの指定方法

シートの指定方法には3つあります。

1.最も基本的な形

Worksheets("シート名")

または

Sheets("シート名")

この場合、実際のシート名と一字一句合っている必要がありますので、
シート名を変更できないようにブックの保護をかけておくか、
もしくは変更しないよう注意喚起をしておくなどの対策が必要です。

2.シートのインデックス番号を使う場合

Sheets(1)

この括弧内の数字はシートが左から何番目にあるかというインデックス番号です。
この方法は全シートに同じ処理を順番にしていく際などに使われます。
例えば、すべてのシートのA1セルに100を入力すると言った場合、次のようにシートの括弧内に変数を使い、
その変数が1から全シート数まで変化するFor Next構文で変化させるという方法で実現できます。

Sub sample()             



  Dim i As Long

  For i = 1 To Sheets.Count

   Sheets(i).Range("A1") = 100

  Next

 End Sub

3.シートのオブジェクト名を使う場合

プロジェクトエクスプローラの各シートのモジュールを見ると、
「Sheet1(data)」のようにシート名が書かれています。

SnapCrab_NoName_2016-6-6_15-5-18_No-00

この括弧の中に書かれている「data」が実際のシート名で、
括弧の手前に書かれている「Sheet1」がこのシートの「オブジェクト名」になります。
シートのオブジェクト名は、下のプロパティウィンドウで変更することができ、
このオブジェクト名をシート指定に使うこともできます。
シート名もオブジェクト名も例えば「data」に変えると次のような表示になります。

SnapCrab_NoName_2016-6-6_15-5-33_No-00

1番のシート名を使う方法であれば、
どのシートを指定しているのが一目瞭然でわかりやすくなるがシート名を変更されたらエラーになる。
一方、オブジェクト名を使えば実際のシート名が変更されても影響は受けなくなりますが、
プロシージャの可読性は低くなります。

個人的にはですが、一般的なマクロの活用においては普通に1番の方法をおすすめします。
このあたりは人それぞれの考え方があるのでどれが一概に正解かは言えないのですが、
わかりやすさが一番という観点からはやはり1番が最もわかりやすいということになります。
シート名が変更されないように対策すれば何の問題もないのですから。

『たった1秒で仕事が片づく Excel自動化の教科書』執筆陣が自ら直接指導。
実務直結・一日集中・受講後無期限サポート付きのマクロVBAセミナー

記事一覧に戻る