【VBA】シートを指定する方法
今回はVBAでシートを指定する方法を分かりやすく説明します。
セルに書き込んだり、セルから値を読み取るときには必ずシートの指定が必要になります。
シートを指定しないと、勝手にアクティブなシートを指定しているので注意です
VBAでは、以下の3つの方法でシートを指定することができます。
- アクティブなシートを指定する方法
- シート名で指定する方法
- シートのインデックス番号で指定する方法
それぞれサンプルプログラム付きで説明するのでご覧ください。
1. アクティブなシートを指定する方法
Sub SelectActiveSheet1()
' アクティブなシートのA1セルに値を代入する
ActiveSheet.Range("A1").Value = 10
End Sub
このプログラムを実行すると、アクティブなシートのA1セルに値が代入されます。
アクティブなシートを切り替えると、そのシートが対象になります。
Sub SelectActiveSheet2()
' アクティブなシートのA1セルに値を代入する
Range("A1").Value = 10
End Sub
このプログラムでも、アクティブなシートのA1セルに値が代入されます。
このプログラムではシートを指定していません。
シートを指定しない場合、デフォルトでアクティブなシートが対象となります。
便利な反面、予想外のシートが対象となるかもしれないので、注意が必要です。
2. シート名で指定する方法
Sub SelectSheetByName()
' シート名を指定して、そのシートのA1セルに値を代入する
Worksheets("Sheet1").Range("A1").Value = 10
End Sub
このプログラムを実行すると、指定したシート(この例では"Sheet1″)がアクティブでなくても、そのシートのA1セルに値を代入できます。
Worksheetsは、VBAでシートを操作するためのコレクションオブジェクトです。
Worksheets(シート名)とすると、シートを指定することができます。
指定したシートが存在しない場合や、シート名を正しく指定していない場合にはエラーが発生するので、存在するシート名を指定して使いましょう。
3. シートのインデックス番号で指定する方法
Sub SelectSheetByIndex()
' インデックス番号を使用してシートを参照し、そのA1セルに値を代入する
Worksheets(1).Range("A1").Value = 10
End Sub
このプログラムを実行すると、指定したインデックス番号のシート(この例では1番目のシート)がアクティブでなくても、そのシートのA1セルに値を代入できます。
Worksheetsはシート名だけでなく、インデックス番号でもシートを指定することができます。
インデックス番号は1から始まるため、存在する範囲の番号を指定して使いましょう。