ActiveSheet
VBA を活用する最も一般的なシチュエーションの一つに、ワークシートの操作があります。
Excel の特定のシートから情報を取得したり、計算結果をシートに出力したりするためには、まず対象のシートを取得する必要があります。
VBA にはシートを取得する方法が複数用意されていますが、今回はその中でもActiveSheetプロパティを使った方法について解説します。
ActiveSheetプロパティは、シートを取得する方法として一般的であり、実際に多くの場面で利用されています。
ただ、ActiveSheetプロパティは、現在アクティブなシートを取得するためのプロパティであるため、コードが実行されるタイミングによっては、意図しないシートが取得される可能性があります。
そのため、可能な限り他の方法を使ってシートを取得することをお勧めします。
ActiveSheet プロパティの使い方
ActiveSheetプロパティは、現在アクティブなシートを取得するためのプロパティです。
一般的な使い方は、以下のようになります。
Dim ws As Worksheet
Set ws = ActiveSheet
MsgBox ws.Name
上記のコードを実行すると、現在アクティブなシートの名前がメッセージボックスに表示されます。
ActiveSheetプロパティはApplicationクラスのプロパティであるため、コード中でActiveSheetと記述するだけで取得することができ、非常に簡単にシートを取得することができます。
変数に代入する場合は、Worksheet型の変数を用意し、Setステートメントを使って代入します。
ActiveSheetが返すのは「アクティブなブック」のアクティブなシートです。マクロを記述したブックとは限らないため、別のブックを開いた直後などは意図しないシートを指すことがあります。また、アクティブなシートがグラフシートの場合はWorksheet型の変数に代入できずエラーになります。
ActiveSheet を使わない書き方
特定のシートを操作する場合は、シート名で取得する方法が確実です。
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Now
シートの取得方法の比較は、以下のページで解説しています。
具体例
現在アクティブなシートを印刷する
Private Sub PrintActiveSheet()
ActiveSheet.PrintOut
End Sub
現在アクティブなシートのセルに値を入力する
Private Sub InputValueToActiveSheet()
' 現在アクティブなシートのA1セルに現在日時を入力
ActiveSheet.Range("A1").Value = Now
End Sub