2016-10-31 13 views
2

現在、私は非常に多くの必要なサブルーチンを持つVBAプロジェクトに取り組んでいます。私がしたいのは、コードのためのすべての私の基本入力パラメータを含む '入力機能'を作成することです。Excel VBAは入力領域に入力パラメータを集約しています

現在、各サブルーチンで変数を宣言する必要があります。つまり、変数の1つが変更された場合は、コード全体を変更する必要があります。 1つの入力ドメインを持つことで、モジュール全体を処理するのではなく、1つの変更を行うことができます。

MATLABでは、すべての入力データを含むstruct "Input"という別のスクリプトを作成します。私のメインスクリプトでスクリプトを実行すると、使用できるようにすべてのパラメータが生成されます。

VBAでも同様のことが可能ですか?クラス関数を見て、サブルーチン外の変数を宣言していますが、最適なソリューションのようには見えません。

+2

TheSilkCode?私はクラスよりも状態を保持するより良い方法を考えることができません。 – Comintern

+0

VBAでカスタムの 'Type'(構造体に似ています)を使用することができます。 –

+0

グローバル変数はしばしば設計が不良であると考えられますが、有効な用途があります。多分これはそれらの一つです。あなたがグローバルパラメータ(グローバル変数)として宣言していないのはなぜですか? –

答えて

0

グローバル変数は、一般的に眉をひそめるされていますが、これはグローバル変数に最適な場所のように思える...

通常のGVが原因のパフォーマンスに及ぼす影響に回避され、それらの可能性が類似してローカル変数と混乱名前と、あなたのプロシージャとサブシステムの間に適切な変数を設定する時間を取る代わりに、それらを使用することの知覚された不器用さ...しかし、それらの潜在的なネガティブがあなたのマクロがやっているものにとって重要な要素ではない場合、あなたのコードで緩和されていれば、それらを使用しない理由はありません。

私の2セントは、GVを使用する利点が欠点あなたの特定の状況のた​​めにそれらにそれらを使用してください!このことができます

希望、なぜあなたはオブジェクト指向のソリューションを却下している

関連する問題