Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

语句For Each in ... next 详解用法

时 间:2011-09-03 00:00:00
作 者:风行   ID:16058  城市:江阴
摘 要:For Each ctl In Me.Controls:
意思是把当前窗体内所有的控件都逐个引用一次
(子窗体控件内的控件不算在内)。
这种用“For Each [对象或属性] In [对象集合或属性集合]”
的遍历方法在ACCESS编程中属于比较常见的用法
正 文:

dim p() as process
dim ps as process
ps=process.getprocesses
for each ps in p
   语句
next
把p看作集合,把ps看作元素。这个就是用PS遍历p中的元素了。

For Each 元素 In 集合
这是用来遍历一个集体的所有元素的,你看一下下面的例子:
'运行之前,请先在窗体上任意添加一些控件.

Private Sub Form_Click()
    For Each Item In Form1
        Print Item.Name
    Next
End Sub

 
 
针对一个数组或集合中的每个元素,重复执行一组语句。

语法

For Each element In group
[statements]
[Exit For]
[statements]

Next [element]

For...Each...Next 语句的语法具有以下几个部分:

(1)element 必要参数。用来遍历集合或数组中所有元素的变量。
对于集合来说,element 可能是一个 Variant 变量、一个通用对象变量或任何特殊对象变量。
对于数组而言,element只能是一个 Variant 变量。 
(2)group 必要参数。对象集合或数组的名称(用户定义类型的数组除外)。 
(3)statements 可选参数,针对 group 中的每一项执行的一条或多条语句。 


说明

如果集合中至少有一个元素,就会进入 For...Each 块执行。一旦进入循环,
便先针对 group 中第一个元素执行循环中的所有语句。
如果 group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,
便会退出循环,然后从 Next 语句之后的语句继续执行。

在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For经常在条件判断之后使用,
例如If Then,并将控制权转移到紧接在 Next 之后的语句。

可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。
但是每个循环的 element 必须是唯一的。

注意 如果省略 Next 语句中的 element,就像 element 存在时一样执行。
如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。

不能在 For...Each...Next 语句中使用用户自定义类型数组,因为 Variant 不能包含用户自定义类型。
 

For Each ctl In Me.Controls

意思是把当前窗体内所有的控件都逐个引用一次

(子窗体控件内的控件不算在内)。
这种用“
For Each [对象或属性] In [对象集合或属性集合]

的遍历方法

ACCESS编程中属于比较常见的用法,用处也很多。

比如最常见的检查窗体是否打开的代码中也有:

Function IsLoaded(strFrmName As String) As Boolean

    '  确定一个窗体是否已被装载。

   

    Const conFormDesign = 0

    Dim objForm As Form

   

    IsLoaded = False

   

    For Each objForm In Forms

        If objForm.FormName = strFrmName Then

            If objForm.CurrentView <> conFormDesign Then  '窗体不是设计模式时

                IsLoaded = True

                Exit Function  ' 一旦找到了此窗体,就退出本函数。

            End If

        End If

    Next

 

End Function

For Each ctl In Me.Controls

   

        '根据ctl的控件类型来选择

    Select Case ctl.ControlType

      Case acTextBox '是文本框,要清空(注意,子窗体下面还有两个锁定的文本框不能赋值)

                If ctl.Locked = False Then ctl.Value = Null

               

            Case acComboBox '是组合框,也要清空

                ctl.Value = Null

            '其它类型的控件不处理

       

        End Select

Next

Dim ctl as Access.control

        For Each ctl In Me.Controls

            If ctl.ControlType = acTextBox Then

                ctl.Value = Null

            End If

        Next

 



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助