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プロパティを使用しています。
コメント