Excel VBAでシートをアクティブにする記録です。
シートをアクティブにするには「Activate」メソッドを使います。
「Select」と「Activate」は違って、「Select」は複数選択できますが、「Activate」は1つしか出来ません。
私のイメージ的に言うと、パソコンの画面の「一番前がアクティブ」です。
< スポンサーリンク >
「Activate」メソッド構文
式.Activate
式 = Worksheet オブジェクトを表す変数。
VBAでシートを選択(アクティブに)にする
シート名を指定してシートを選択(アクティブに)する
aaaというシート名のシートを選択(アクティブに)する
Sub SheetActiveTest1()
Sheets(“aaa”).Activate
End Sub
aaaというシート名のシートが存在しない場合はエラーになります
aaaというシート名が存在するか判断して、存在しない場合はaaaというシートを追加し選択(アクティブに)にする
Sub SheetActiveTest2()
‘変数の宣言
Dim ws As Worksheet
Dim SheetName As String
Dim flag As Boolean
‘変数にシート名を入れておく
SheetName = “aaa”
‘判定用の変数にFalseを代入しておく(一つもtrueにならなかった場合のため)
flag = False
‘ワークシートが存在する限り繰り返す
For Each ws In Worksheets
‘aaaというシート名がある場合は判定用変数にtrueを入れる
If ws.Name = SheetName Then flag = True
Next ws
‘判定用変数がFalseの場合はaaaというワークシートを最後に追加する
If flag = False Then
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = SheetName
End If
‘aaaというシート名を選択する
Sheets(SheetName).Activate
End Sub
2番目にシートを選択(アクティブに)する
複数のシートが存在し、その中で2番目にあるシートを選択(アクティブに)する
Sub SheetActiveTest3()
Sheets(2).Activate
End Sub
2つ以上のシートが存在しないとエラーになります
シートが2つ以上存在するか判断して、存在する場合は、その中で2番目にあるシートを選択(アクティブに)する
Sub SheetActiveTest4()
If Sheets.Count >= 2 Then
Sheets(2).Activate
Else
MsgBox “シートは2つ以上存在しません”
End If
End Sub
「Sheets(“aaa”).Activate」とシート名で指定する場合、「aaa」のシートが別のブックの場合、先に該当のブックをActivateしておかないとエラーになります。
こんな記事も書いています