標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。
で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。
コード例)
Private oSheetA as Worksheet
Sub SetSheet(sName as String)
Set oSheetA = worksheets(sName)
End Sub
Sub SetValue(nValue as integer)
xxxxxx ←ここでoSheetAがActiveならやりたいことがある。
oSheetA.Cells(nRow, nCol) = cValue
End Sub
具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。
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演算子で同じオブジェクトか比較してみるってのはどうでしょう?
質問者
お礼
おぉっ、衝撃的!
このような簡潔な方法があったとは。
ありがたく使わせていただきます。
ついでに、ちょっと聞いてみてもいいですか?
オブジェクト変数に開いたBookをSetしておいて、そのオブジェクト変数だけで、Bookがまだ開いているかどうかを調べる方法ってご存知ですか?
Is Nothingだと引っかからないんですよね。
お礼
おぉっ、衝撃的! このような簡潔な方法があったとは。 ありがたく使わせていただきます。 ついでに、ちょっと聞いてみてもいいですか? オブジェクト変数に開いたBookをSetしておいて、そのオブジェクト変数だけで、Bookがまだ開いているかどうかを調べる方法ってご存知ですか? Is Nothingだと引っかからないんですよね。