Excelでワークシートを選択する場合にSelectではなくActivateを使った方がよい理由
Rangeの選択の前にWorksheetの選択が必要
Rangeオブジェクトを選択(Select)する場合、先にそのRangeがあるWorksheetオブジェクトを選択しておく必要があります。選択しておかないと「Range クラスの Select メソッドが失敗しました」というエラーが表示されます。
たとえばSheet1が選択されているとき、Sheet2のA1セルを選択するとエラーになります。
Sheet2.Range("A1").Select
Worksheetの選択メソッドは2種類ある
そこで、Rangeを選択する前にWorksheetオブジェクトを選択します。Worksheetオブジェクトを選択する場合、次の2種類のメソッドがあります。
- Worksheet.Select
- Worksheet.Activate
通常はこのどちらでもWorksheetを選択できます。
しかし、非表示のWorksheetに対してはActivateのみが使用できます。非表示のWorksheetにSelectした場合には「アプリケーション定義またはオブジェクト定義のエラーです」というエラーが表示されます。
Sheet2.Visible = xlSheetHidden Sheet2.Activate 'これはOK Sheet2.Select 'これはエラー
これを考えると、ワークシートを選択するにはActivateメソッドを使った方がよりよい(無用のエラーに遭遇する機会が減る)といえます。
すべてのワークシートを選択するにはSelectを使う
逆に、すべてのワークシートを選択する場合には、ActivateではなくSelectを使います。Worksheets.Selectと書きます。
Worksheets.Select 'すべてのワークシートを選択する
Worksheets.Selectを使う場合、すべてのワークシートが表示されている必要があります。非表示のワークシートがある場合、上記と同様に「アプリケーション定義またはオブジェクト定義のエラーです」というエラーが表示されます。