たった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番が最もわかりやすいということになります。シート名が変更されないように対策すれば何の問題もないのですから。