A子さんSheets と Worksheets の違いが分からない…
どちらを使えばエラーにならない?
実務での使い分けのコツが知りたい!
結論:Sheetsは「すべてのシート」、Worksheetsは「ワークシートだけ」
目次
Sheetsとは?
ブック内のすべてのシート(ワークシート、グラフシート、その他)を扱うオブジェクトです。
Sheets(1).Select



ワークシートであるとは限らず、グラフシートが先頭にあればそれを選択します。
Worksheetsとは?
ブック内のワークシートだけを対象にするオブジェクトです。
Worksheets(1).Select



必ず通常のワークシートを指します。
Chart Sheet はカウントされません。
実際に使い分ける必要があるケース
| シート構成 | Sheets | Worksheets |
|---|---|---|
| 通常のワークシートのみ | ✅ どちらも使用可能 | ✅ 使用可能 |
| グラフシートが含まれる | ⚠️ 意図しない挙動あり | ✅ 安定 |
| シートの数を数える | ❗ ワークシート以外も含む | ✅ ワークシートだけカウント |
使用例で比較してみよう
Sheetsを使った例
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Select
MsgBox Sheets(i).Name
Next i



グラフシートがあると Sheets(i).Select で意図しないシートが選ばれる可能性。
Worksheetsを使った例
Dim i As Integer
For i = 1 To Worksheets.Count
Worksheets(i).Select
MsgBox Worksheets(i).Name
Next i



ワークシートのみを対象にしているので、処理が安定します。
Sheetsを使うとエラーになるケース
以下のような処理は Sheets を使うとエラーや想定外の挙動を引き起こします。
❌ エラーの例(Chart Sheetに対してセル操作)
Sheets("グラフ1").Range("A1").Value = "テスト" ' → エラー
グラフシートにはセルが存在しないため、Range指定ができません。
まとめ:基本はWorksheetsを使うべし!
Sheets は「すべてのシート」、Worksheets は「通常のシートのみ」
グラフシートなどが含まれる場合は、Sheets を使うとエラーの原因に
安定した処理をしたいなら、基本は Worksheets を使うのがベスト

コメント