ActiveSheet

にメンテナンス済み

VBA を活用する最も一般的なシチュエーションの一つに、ワークシートの操作があります。

Excel の特定のシートから情報を取得したり、計算結果をシートに出力したりするためには、まず対象のシートを取得する必要があります。

VBA にはシートを取得する方法が複数用意されていますが、今回はその中でもActiveSheetプロパティを使った方法について解説します。

ActiveSheetを使用する際の注意

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

シートの取得方法の比較は、以下のページで解説しています。

ワークシートの取得
VBAを使って、特定のワークシートを取得する方法を解説します。名前で指定する方法や、インデックスで指定する方法についても解説します。

具体例

現在アクティブなシートを印刷する

現在アクティブなシートを印刷する
Private Sub PrintActiveSheet()
    ActiveSheet.PrintOut
End Sub

現在アクティブなシートのセルに値を入力する

現在アクティブなシートのセルに値を入力する
Private Sub InputValueToActiveSheet()
  ' 現在アクティブなシートのA1セルに現在日時を入力
  ActiveSheet.Range("A1").Value = Now
End Sub
#vba #Excelの操作 #activesheet #シート #ワークシート