如何使循环结构适应用户的偏好?

时间:2012-02-25 18:44:42

标签: excel vba loops excel-vba

我正在使用循环来填充集合。集合的每个项目都有一些属性,但其中一些属性是可选的。系统将提示用户选择将哪些属性复制到集合中。如果用户选择忽略它们,是否可以省略可选属性的代码?

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

使用此代码,每次迭代都会读取Checkboxes的值。我担心这会不必要地减慢程序的执行速度。复选框可以读取一次,循环的内容将适应复选框的值。这可能吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

读取开头的循环复选框,并将其值分配给三个布尔值或一组布尔值。那么你每次只读取布尔变量。

这将提高性能,因为您不需要访问任何对象变量,只需要一个布置在类/对象中的布尔值。