- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでオブジェクト変数にsetしたシートがactiveかどうかを調べるには?)
VBAでオブジェクト変数にSetしたシートがactiveかどうかを調べるには?
このQ&Aのポイント
- VBAでオブジェクト変数にSetしたシートがActiveかどうかを判断する方法を教えてください。
- 標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、あるタイミングで、あるシートをそのオブジェクト変数にSetしています。そのシートに値をセットする際に、そのシートがActiveだった場合にのみ処理を行いたいです。
- 複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、値をセットするセルが見えるようにセルをActivateかスクロールさせたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Option Explicit Private oSheetA As Worksheet Sub SetSheet(sName As String) Set oSheetA = Worksheets(sName) End Sub Sub SetValue(nValue As Integer) If oSheetA Is ActiveSheet Then MsgBox ("hoge") End If oSheetA.Cells(1, 1) = nValue End Sub Sub Main() SetSheet ("Sheet1") SetValue (5) End Sub '実行できるようにソースは変更していますが, 'こんな感じでIs演算子で同じオブジェクトか比較してみるってのはどうでしょう?
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
回答No.2
.nameでもよいかな If oSheetA.Name = ActiveSheet.Name Then Msgbox "同じシートです"
質問者
お礼
開いているBookが1つだけなら、これでもいいですね。
お礼
おぉっ、衝撃的! このような簡潔な方法があったとは。 ありがたく使わせていただきます。 ついでに、ちょっと聞いてみてもいいですか? オブジェクト変数に開いたBookをSetしておいて、そのオブジェクト変数だけで、Bookがまだ開いているかどうかを調べる方法ってご存知ですか? Is Nothingだと引っかからないんですよね。