Office中国论坛/Access中国论坛

标题: 如何遍历另一个已经打开窗体中的所有控件? [打印本页]

作者: yrlxm    时间: 2003-12-2 15:56
标题: 如何遍历另一个已经打开窗体中的所有控件?
如何遍历另一个已经打开窗体中的所有控件?
作者: zhengjialon    时间: 2003-12-2 21:26
使用 For Each...Next 语句
   

For Each...Next 语句会重复一个语句块,而它是作用于集合中的每个对象或是数组中的每个元素。当循环执行一次则 Visual Basic 会自动设置一个变量。例如,下面的过程会关闭所有的窗体,除了窗体包含的过程正在运行以外。

Sub CloseForms()
    For Each frm In Application.Forms
        If frm.Caption <> Screen. ActiveForm.Caption Then frm.Close
    Next
End Sub

下面的代码会在数组的每个元素中循环,并且将每个值设置成它的索引变量 I 的值。

Dim TestArray(10) As Integer, I As Variant
For Each I In TestArray
    TestArray(I) = I
Next I

对某范围的单元格做循环
可以使用 For Each...Next 循环对某范围的单元格做循环。下面的过程会对于 Sheet1 中的 A110 范围做循环,并将任何绝对值小于 0.01 的号码设为 0。

Sub RoundToZero()
    For Each myObject in myCollection
        If Abs(myObject.Value) < 0.01 Then myObject.Value = 0
    Next
End Sub

在完成前退出 For Each...Next 循环
可以使用 Exit For 语句来退出 For Each...Next 循环。例如,当错误发生时可以在 If...Then...Else 语句或是 Select Case 语句的 True 语句块中使用 Exit For 语句,它是专门用来检查此错误的。如果没有错误发生,If...Then...Else 语句的值为 False,则循环会象预期那样运行。

下面的示例,测试在 A1:B5 范围内找出第一个不含数值的单元。如果有找到此类单元,则会有信息显示并用 Exit For 语句退出循环。

Sub TestForNumbers()
    For Each myObject In MyCollection
        If IsNumeric(myObject.Value) = False Then
            MsgBox "Object contains a non-numeric value."
            Exit For
        End If
    Next c
End Sub


作者: 没牙兔兔    时间: 2003-12-2 21:34
解惑哦~!!!!

好冬冬,顶之~!
作者: yodong    时间: 2003-12-3 17:42
版主就是版主,好贴!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3