私はループを使ってコレクションを埋めています。コレクションの各アイテムにはいくつかのプロパティがありますが、これらのプロパティの一部はオプションです。コレクションにコピーするプロパティを選択するようユーザーに求められます。ユーザーが無視することを選択した場合、オプションのプロパティのコードを省略することは可能ですか?このコードでループの構造をユーザーの好みに合わせるにはどうすればいいですか?
Sub fillcoll()
Dim coll as Collection
Set coll = New Collection
Dim NewItem as Class1
For each r in Selection.Rows
Set NewItem = New Class1
If Userform1.Checkbox1.Value = True then
NewItem.Property1 = somearray1(r.Row)
End If
If Userform1.Checkbox2.Value = True then
NewItem.Property2 = somearray2(r.Row)
End If
If Userform1.Checkbox3.Value = True then
NewItem.Property3 = somearray3(r.Row)
End If
Next r
End Sub
、チェックボックス値は、各反復において読み出されます。プログラムの実行が不必要に遅くなる恐れがあります。チェックボックスは一度読むことができ、ループの内容はチェックボックスの値に適応します。これは可能ですか?
ありがとうございます。
"プログラムの実行が不必要に遅くなる恐れがあります。"恐れや知っている?あなたは尋ねる前にあなた自身をチェックしましたか?最適化が必要であることがわかっていない限り最適化しないでください。あなたが知らないなら、見つけてください。 –
10,000回の処理を含むバックグラウンドプロセスがある場合は、1回の繰り返しにつき1秒または2回の保存が価値があります。しかし、画面を読んで意思決定し、指を動かし、キーを押してマウスをクリックしなければならないユーザーがいます。ユーザーは保存された時間に気づくことはありません。 –
私はここでJCMとTonyに同意します。あなたはそこにさえいないかもしれない何かを心配しているかもしれません。ところで、somearray1,2,3は何をするのですか?また、配列の範囲を読み取ってから、ループ自体をループするのではなく、ループすることもできます。これはまた、ループの速度を増加させる。 –