驚愕の事実

ある Office ドキュメントが VBA のマクロを含む場合、その中のモジュールに記述された Public 変数の値が有効である期間は、あるプロシージャの実行を開始し、そのプロシージャが "End Sub" で終了するまでの間のみです。

ほとんどの場合、プロシージャ終了後も値は保持されますが、意図しないタイミングで保持されていた Public 変数の値が破棄され、使えていた変数の値が突然使えなくなる場合があります。そのため、Public 変数がアプリケーション終了時まで有効であることを期待する VBA マクロの実装は、推奨されません。

Public 変数って所謂グローバル変数だと思っていたんですが、勝手に消えることがあるの???
今まで書いたコードを思い返すと冷や汗が出るんですが・・・

じゃ、どーすればいいの?

どのような状況でも変数の値を保持したい場合は、以下の方法を使用します。
Excel の場合 非表示にしたワークシートに値を記述します。

わーくしーと・・・