2017-10-16 12 views
0

VBAエディタのTools -> ReferencesメニューからワークブックB(B.xlsm)を参照するブックA(A.xlsm)があります。 ABにいくつかのマクロを使用します。 Aを閉じると、Bは開いたままで、すべての変数は現在の状態を維持します。したがって、私がAを再び開いた場合、Bにあるマクロのいくつかは、それ以上Aとの互換性がない以前の呪文からの状態を持つため、エラーが発生します。参照されたブック変数をリセットする方法

すべての変数が元の状態になるようにBをリセットする方法はありますか? Aが閉じられると、閉じる方法がありますかB

+1

通常、変数を閉じる/リセットする必要はありません変数(通常は)は、使用/作成されるプロシージャまたは関数で生きて死ぬ:https://www.ozgrid.com/VBA/variable- scope-lifetime.htmより広いスコープで変数を作成する場合は、 'Set ws1 = Nothing'や' strVariable = vbNullString'や 'lngRowCount = 0'や' Set adoRecordSet.Close'そして 'Set adoRecordSet = Nothing' .... – Ralph

+0

@Ralph私の場合、それはモジュール変数です – Roland

答えて

1

変数をリセットするには、参照用ワークブックBにCleanUp-Subを書き、Aから呼び出すことをお勧めします。

Aが閉じているときにブックBを閉じるには、ハックが必要です。 close Workbooks("B.xlsx")のようなものを発行するだけではエラーが発生しません(1004 - 別のブックで参照されているブック...)。

David Demnerがここに示唆しているトリックを見てください:https://stackoverflow.com/a/18132384/7599798考えられるのは、参照されたブックでは、終了ルーチンがトリガーされますが、closeはすぐに実行されないということです。ワークブックを閉じたときに電話をかけますが、CloseB)は呼び出し元のブック(A)の終了後にのみ実行されます。

関連する問題