VBATips

WorkSheetsとSheetsの違い【ExcelVBA】

SheetsコレクションとWorkSheetsプロパティ

WorkSheetsとSheetsでは対象とするシートが異なります。
下記のように
WorkSheetsの対象はワークシート 1つですが、
Sheetsの対象は 4 つあります。

参照方法対象シート
Sheetsコレクションワークシート
グラフシート
マクロシート
ダイアログシート
WorkSheetsプロパティワークシート

SheetsとWorkSheetsの違いのサンプルコード

下記のようなシートを準備します。

worksheets sheets違い

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

関連記事

コメント

タイトルとURLをコピーしました