-1

グローバル変数のロードを持つモジュールがあります。このモジュールのグローバル変数の名前を最初の列に保存し、グローバル変数の値を 2 番目の列に保存したい

すなわち

public variable1 as string
public variable2 as string
public variable3 as string

variable1 = David
variable2 = Chicken
Variable3 = Apple

列 a: 変数 1、変数 2、変数 3 列 b: デビッド、チキン、アップル

4

3 に答える 3

1

これについては、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に入れ、それを解析してから結果を書き戻します。簡単ではなく、推奨されません。

于 2013-08-19T18:22:18.823 に答える