ActiveSheetプロパティ
一番手前に表示されているシートであるアクティブシートを参照するにはActiveSheetプロパティを利用します。
アクティブシートはブックに紐づくため、3つのブックを開いている場合は3つのブックそれぞれでアクティブシートが存在することになります。
1つのブックを複数のウインドウで開いた場合の注意点
Excel2007以降の機能ですが、表示タブ→ウィンドウグループ→新しいウィンドウを開く、を選択すると、同じブックを複数のウインドウで開くことが出来ます。
ブック名にはブック名とコロン(:)+連番が表示され、同じブックでも区別されます。このとき、同じブックでもウインドウが異なれば以下のようにアクティブシートもSheet1とSheet2で異なる場合があります。
この場合のActiveSheetプロパティはウインドウそれぞれで異なります。ブック名だけで判断できない場合があるため、複数のウインドウで表示している場合のアクティブシートの参照には注意が必要です。
構文
Property Application.ActiveSheet As Object
Property Window.ActiveSheet As Object
Property Workbook.ActiveSheet As Object
ActiveSheetプロパティの親オブジェクトとして、Applicationオブジェクト、Windowオブジェクト、Workbookオブジェクトのいずれかを指定します。
省略時は作業中のアクティブブックのアクティブシートが参照対象になります。
サンプルコード
親オブジェクトをApplicationオブジェクト、Windowオブジェクト、WorkbookオブジェクトなどそれぞれでのActivesheetの取得を行うサンプルです。
PERSONAL.XLSBを利用している場合はApplication.Windows(x).Activesheetで取得することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub ActivesheetTest() Dim sht As Worksheet Set sht = Application.ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = ActiveWindow.ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = Application.Windows(1).ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = Application.Windows(2).ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = Application.Windows(3).ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = Application.Windows(4).ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name Set sht = ActiveWorkbook.ActiveSheet Debug.Print sht.Parent.FullName & " * " & sht.Name End Sub |