超既出FAQですな。

『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871

簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。