SheetsコレクションとWorkSheetsプロパティ
WorkSheetsとSheetsでは対象とするシートが異なります。
下記のように
WorkSheetsの対象はワークシート 1つですが、
Sheetsの対象は 4 つあります。
| 参照方法 | 対象シート |
| Sheetsコレクション | ワークシート |
| グラフシート | |
| マクロシート | |
| ダイアログシート | |
| WorkSheetsプロパティ | ワークシート |
SheetsとWorkSheetsの違いのサンプルコード
下記のようなシートを準備します。

Public Sub sample()
'■シートを追加
Call Sheets.Add(Type:=xlWorksheet)
Call Sheets.Add(Type:=xlChart)
Call Sheets.Add(Type:=xlDialogSheet)
Call Sheets.Add(Type:=xlExcel4MacroSheet)
Dim sh As Variant
'■Sheetsの場合
For Each sh In Sheets
Debug.Print sh.Name
Next
'■WorkSheetsの場合
For Each sh In Worksheets
Debug.Print sh.Name
Next
'■Sheetsの結果
'Macro1
'ダイアログ1
'グラフ1
'Sheet2
'Sheet1
'■WorkSheetsの結果
'Sheet2
'Sheet1
End Sub
SheetsとWorksheetsのどちらを使用すればよいか
対象ブックがワークシート以外なければ、SheetsでもWorkSheetsでもどちらでも構いません。
ただ、上記のようにFor EachでLoopする場合は、対象シートがWorkSheetsである事が多いと考えます。
少なからず、私はダイアログシートやマクロシートは使いません。
ただ、エクセルでユーザーが勝手にシートを追加する場合もあると思いますので、
WorkSheetsプロパティを使用しています。



コメント