これについては、3 つの方法が考えられます。
グローバル変数をプロパティとして設定し、その値をワークシートのセルに保存できます。コードの実行は遅くなりますが、値は保持され、スプレッドシートで表示/編集できます。
たとえば、グローバル変数のように機能する文字列プロパティ 'Foo' を定義するには、グローバル モジュールに次のように記述します。
Public Property Get Foo() As String
Foo = DebugSheet.[B2]
End Property
Public Property Let Foo(value As String)
DebugSheet.[B2] = value
End Property
DebugSheet.[Foo] など、グローバルに名前付き範囲を使用することもできます。
3 番目の方法は、各グローバルをスプレッドシートの特定のセルに明示的に保存するハードコーディングされた保存ルーチンと読み込みルーチンを用意することです。これは、最後にグローバル変数を変更してから保存ルーチンが実行された場合にのみ機能します。
編集
補足として、プロパティをお勧めします。それを書くにはもっと時間がかかりますが、後で (速度のために) VBA 変数に戻したい場合は、名前付き範囲を使用するよりも少ないコード変更で済みます。
編集 2
夢中になって自己変更コードを作成したい場合は、ワークブック VBProject を取得し、グローバルを含むモジュールのコンポーネントを取得してから、その CodeModule から行を取得します。
set module = ThisWorkbook.VBProject.VBComponents("GlobalsModule").CodeModule
code = module.Lines(1, module.CountOfLines)
次に、モジュールコードを文字列変数code
に入れ、それを解析してから結果を書き戻します。簡単ではなく、推奨されません。