2016-07-18 9 views
1

サブを実行する前に、コレクションを使用して変数を0に設定しようとしています。私は別々のサブルーチンとしてすべてのメトリックを持っています。それぞれのサブについて、変数を長く宣言し、それらのすべてを0に設定してから、必要なデータを引き出すようにします。毎回0に設定する必要はありませんが、冒頭や何かでそれらを等しく設定する必要があるので、各サブルーチンに入れる必要はありませんが、どのようにするかは不明ですそれをする。私はこのコードを試みたが、それも遠隔から右であるか、それをどこに置く場合、私は考えている。その後、VBA内の複数のサブルーチンで変数を0に設定する

Dim myVars As Collection 
Set myVars = New Collection 
Dim j As Variant 
myVars.Add a 
myVars.Add b 
myVars.Add c 
myVars.Add d 
myVars.Add e 


For j = 1 To myVars.Count 
myVars(j) = 0 
Next j 
+0

グローバル変数の場合は、他の各サブファイルの上部で実行する新しいサブセットSetToZero()を作成することができます。 – dashnick

+0

'j'はループカウンターで、' variant'と宣言しないでください!そうすることで、後でコードを見て混乱するだけでなく、わずかなパフォーマンス上のペナルティが発生します。「j」を使うたびに、VBAはそれに含まれるデータの_タイプ_を判断する必要があります。 5項目のループではそれほど大したことではありませんが、コードベースが拡大するにつれて追加が始まります。なぜコードが永久に実行されるのか不思議に思うでしょう。 – FreeMan

+0

jにオブジェクトが必要なエラーがある場合はどうすればいいですか? – beks123

答えて

3

あなたは数値型として、あなたの変数を宣言した場合(例えばLongIntegerByteDoubleSingle。)彼らはです。自動的にに値が割り当てられます。

強く型付けされた変数を使用する方が良いでしょう。コレクションを使用したり、変数をスコープ内でグローバルにする必要はありません。

+0

を修正するにはどうしたらよいですか?実際に物理値0が表示されない場合は、空白のままにしてください。 – beks123

+0

バリアントとして宣言しません。 : 'Dim foo As Long:Debug.Assert foo = 0:Debug.Print" Foo = "&foo' – ThunderFrame

関連する問題