Excelでワークシートを選択する操作をマクロ記録すると、
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
といったコードが自動的に作られます。
このワークシートを取得するコード(オブジェクト式)
Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
で返されるのが、Worksheetオブジェクトであるかのような、記述を見かけたので記事にさせていただきます。
結論からいうと、Sheet1という名前のワークシートがあるときに、
Sheets("Sheet1")
というオブジェクト式で取得できるのは、確かにWorksheet型のオブジェクトですけれど、
Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
で取得できるのは、Sheetsコレクションです。
Sheetsプロパティの戻り値種別を確認するサンプルマクロ
VBAのTypeName関数で戻り値の種別を確認しましょう。
「Sheet1」「Sheet2」という名前のワークシートが存在するときに、以下のSubプロシージャを実行してください。
Dim obj As Object
Set obj = Sheets("Sheet1")
Debug.Print TypeName(obj)
Debug.Print TypeName(obj)
End Sub
イミディエイトウィンドウには、TypeName関数の結果
Worksheet
Sheets
が出力されます。
もちろん、
Set obj = Sheets("Sheet1")
Debug.Print TypeName(obj)
の結果が、
Worksheet
で、つづく、
Set obj = Sheets(Array("Sheet1", "Sheet2"))
Debug.Print TypeName(obj)
の結果が、
Sheets
です。
SheetsはWorksheetと同じくSelectメソッドを持つ
確認したとおり「Sheets(Array("Sheet1", "Sheet2", "Sheet3"))」はSheetsコレクションを返すのですから、
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
は、SheetsコレクションのSelectメソッドを呼んでいるコードです。
一方
Sheets("Sheet1").Select
は、Worksheet型オブジェクトのSelectメソッドを呼んでいるコードです。
オブジェクト式
Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
が返すのはWorksheetオブジェクトではありません。
最終更新日時:2019-03-30 05:43
- Newer:PowerPoint VBAで画像をトリミングする
- Older:PowerPoint VBAで表に値を設定する
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » Sheets(Array("Sheet1", "Sheet2", "Sheet3"))の戻り値はWorksheetではない