VBA シートの選択、シートのアクティブ化、アクティブシートの取得
In this Article
今回は、VBAのActiveSheetオブジェクトについて説明します。また、ワークシートをアクティブにする方法、選択する方法、ワークシートを移動する方法(およびその他多数)についても説明します。VBAでワークシートを操作するための詳しい情報は、VBAワークシートガイドをご覧ください。
アクティブシート(ActiveSheet)
VBAでは、アクティブシートは現在アクティブであるワークシートのことを指します。一度にアクティブにできるのは1つのシートだけです。
ワークシートのアクティブ化(ActiveSheetの設定)
アクティブシートを設定するには、Worksheet.Activateを使用します。
Worksheets("入力").Activate
Activateコマンドは、実際にシートに「移動」して、表示されているシートを変更します。
上記の例では、シートタブ名(またはシート名)を使っています。 代わりに、ワークシートのVBAコード名を使用することもできます。
Sheet1.Activate
アクティブシート名
アクティブシートのシート名を取得するには以下のようにします。
msgbox ActiveSheet.name
選択されたシートとアクティブシートの比較
どの時点でも、アクティブシートになれるのは1つのシートだけです。ただし、複数のワークシートを一度に選択することは可能です。
複数のワークシートが選択されている場合、「最上位」のワークシートのみがアクティブ(ActiveSheet)とみなされます。
ワークシートの選択
ワークシートをアクティブにする代わりに、ワークシートを選択したい場合。代わりに.Selectを使用します。
シート名によるワークシートを選択
シート名からワークシートを選択します。
Sheets("入力").Select
インデックス番号によるワークシートの選択
他のタブとの相対的な位置に基づいてワークシートを選択します。
Worksheets(1).Select
VBAのコード名でワークシートを選択する
Sheet1.Select
VBAコード名でワークシートを選択することで、ワークシート名の変更によるエラーを防ぐことができます。
現在のワークシートを選択する
現在のワークシートを選択するには、ActiveSheetオブジェクトを使用します。
ActiveSheet.Select
その他のアクティベート/シート選択の例
ActiveSheetを変数に設定する
アクティブシートをWorksheetオブジェクト変数 に代入します。
Dim ws As Worksheet
Set ws = ActiveSheet
アクティブシートのシート名の変更
アクティブシートのシート名を変更します。
ActiveSheet.Name = "新しいシート名"
With ActiveSheet
Withステートメントを使うと、オブジェクト(SheetsやActiveSheetなど)を扱うときに、コードを効率化することができます。
With ActiveSheet
.Name = "リフレッシュ"
.Cells.Clear
.Range("A1").Value=.Name
End With
各コードの前に「ActiveSheet」を繰り返す必要がないことに注意してください。これは、長いコマンドのリストを扱うときに、非常に大きな時間の節約になります。
選択されたシートをループする
次のマクロは、選択されたすべてのシートをループして、名前を表示します。
Sub GetSelectedSheetsName()
Dim ws As Worksheet
For Each ws In ActiveWindow.SelectedSheets
MsgBox ws.Name
Next ws
End Sub
次のシートへ移動
このコードは、次のシートに移動します。もし、ActiveSheetが最後のシートであれば、Workbookの最初のシートに移動します。
If ActiveSheet.Index = Worksheets.Count Then
Worksheets(1).Activate
Else
ActiveSheet.Next.Activate
End If