Excelブック内に複数のワークシートがある場合、セルを取得・操作する前に「どのワークシートか」を明示的に指定することが重要です。
ここでは、Range
や Cells
を使った基本操作に加え、**ワークシートの選択方法(インデックスや変数の活用)**についても解説します。
目次
1. ワークシートを明示してセルに値を代入する
■ Rangeを使う場合
Worksheets("Sheet1").Range("A1").Value = "こんにちは"
"Sheet1"
という名前のシートの A1 セルに「こんにちは」と書き込みます。
■ Cellsを使う場合
Worksheets("Sheet1").Cells(1, 1).Value = "こんにちは"
Cells(1, 1)
はRange("A1")
と同じ意味です。行・列の番号で指定できます。
2. ワークシートをインデックス番号で指定する
シート名ではなく、**ワークシートの位置(順番)**で指定することもできます。
Worksheets(1).Range("A1").Value = "1番目のシート"
Worksheets(1)
はブック内で左から1番目のシートを指します。- シート名が変更されても、インデックスは順番で固定されているため、変更に強いというメリットがあります。
- ただし、シートの順番が変わると違うシートを指すので注意が必要です。
3. ワークシートを変数で指定する
繰り返し同じシートにアクセスする場合は、変数にワークシートをセットしておくと効率的です。
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
ws.Range("A1").Value = "Hello"
ws.Cells(2, 1).Value = "World"
ws
を使えば、何度もWorksheets("Sheet1")
と書く必要がありません。- 可読性や保守性が高くなるため、中〜大規模な処理では特におすすめです。
4. ワークシートをアクティブにしてからセルを指定する
ワークシートを選択状態(アクティブ)にする方法もあります。
Worksheets("Sheet1").Activate
Range("A1").Value = "選択中のシートに入力"
Activate
で対象のシートを選択状態にし、そのあとRange
やCells
を使ってセルを操作します。- ただし、アクティブシートが変わると意図しない操作につながるため、基本的にはワークシートを明示して操作する方が安全です。
5. おわりに
セルを操作する際は、必ず対象のワークシートを明示する習慣をつけましょう。
特に、複数シートを扱うマクロでは、どのシートに書き込むのかを明確にしておくことで、ミスや不具合を防ぐことができます。
ワークシートの指定方法としては、シート名、インデックス番号、変数化などがあり、用途に応じて適切に使い分けることが大切です。
コメント