COMオブジェクトを保持するためのグローバル変数を宣言するブックがあります。Excel vbaのグローバル変数の有効期間はどのくらいですか?
Global obj As Object
は、私はそうのようなのWorkbook_Openイベントでそれをinitalize:
Set obj = CreateObject("ComObject.ComObject");
は、私はそれが作成されています見ることができますし、その時に私はそれにいくつかのCOM呼び出しを行うことができます。私のシートで
私は次のようになり、細胞の束持っている:私は少しのためにこれらの作品を見ることができます
Function CallToComObject(...)
If obj Is Nothing Then
CallToComObject= 0
Else
Dim result As Double
result = obj.GetCalculatedValue(...)
CallToComObject= result
End If
End Function
機能を持っているモジュール内
=Module.CallToComObject(....)
を、しかし後にいくつかのシートがリフレッシュされると、objオブジェクトはもはや初期化されません。つまり、Nothingに設定されます。
これを引き起こす可能性のあるものを誰かが説明してもらえますか?
COMオブジェクトを呼び出す関数が複数あるのですか?関数内でスタティック変数にすることを1つだけ考えれば、関数は初期化されているかどうかをチェックし、そうでなければ初期化します。 –
グローバル変数は悪いですか?また、適切なキーワードが「グローバル」ではなく「パブリック」であると私は信じている。 –