動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2411(ビルド18217.20000クイック実行)ベータチャネル
「vba シート アクティブ 判定」
といった検索キーワードでアクセスがありました。
Excel VBAで、いずれかのシートがアクティブかどうかを判定するには、どのようなコードを書けばいいのかを調べていた方による検索でしょう。
[スポンサードリンク]
Is演算子でアクティブシートを判定するサンプルマクロ
複数シートの存在するブックがアクティブな状態で、以下のExcelマクロを実行してください。
シート名が順番にメッセージボックスに表示され、アクティブシートの場合だけ、メッセージボックスに表示されたシート名の後ろに「←このシートがアクティブ」と付加されます。
Sub アクティブシートを判定する__Is演算子で判定()
Dim msg As String
Dim sht As Object
For Each sht In Sheets
If sht Is ActiveSheet Then ' Is演算子で判定
msg = " ←このシートがアクティブ"
Else
msg = ""
End If
MsgBox sht.Name & msg
Next
End Sub
Dim msg As String
Dim sht As Object
For Each sht In Sheets
If sht Is ActiveSheet Then ' Is演算子で判定
msg = " ←このシートがアクティブ"
Else
msg = ""
End If
MsgBox sht.Name & msg
Next
End Sub
For Each~Nextループ内の以下の行で、アクティブシートかを判定しています。
If sht Is ActiveSheet Then
オブジェクト変数shtと、ActiveSeetプロパティの戻り値が同じかを、Is演算子で判定しています。
シート名でアクティブシートを判定するサンプルマクロ
オブジェクト変数などが苦手な場合は、以下のようなシート名を使った判定がわかりやすいはずです。
Sub アクティブシートを判定する__シート名で判定()
Dim msg As String
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Name = ActiveSheet.Name Then 'シート名が等しいかで判定
msg = " ←このシートがアクティブ"
Else
msg = ""
End If
MsgBox Sheets(i).Name & msg
Next
End Sub
Dim msg As String
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Name = ActiveSheet.Name Then 'シート名が等しいかで判定
msg = " ←このシートがアクティブ"
Else
msg = ""
End If
MsgBox Sheets(i).Name & msg
Next
End Sub
[スポンサードリンク]
- Newer:VBAでアクティブブックを切り替えるには
- Older:VBAで複数のアクティブセルを取得する??
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAでシートがアクティブかを判定するには