ms-access - 循环遍历表单上所有未绑定(bind)的控件并清除数据

标签 ms-access vba ms-access-2010

我想遍历表单上的所有 UNBOUND 控件并清除它们的数据或重置它们的值。我有文本框、组合框和复选框。每次我尝试这样的事情:

Dim ctl As Control
    For Each ctl In Me.Controls
        If IsNull(ctl.ControlSource) Then
            ctl.Value = Nothing
        End If
    Next ctl

我收到运行时错误消息:

438 This object doesn't support this property or method.

最佳答案

该代码循环遍历表单 Controls 中的每个控件。收藏。该集合包括控件,例如标签和命令按钮,它们既未绑定(bind)也未绑定(bind)...因此尝试引用它们的.ControlSource产生该错误。

对于诸如未绑定(bind)文本框之类的控件,其.ControlSource property 是一个空字符串,而不是 Null。

因此,当您遍历控件时,请检查 .ControlSource仅适用于您希望定位的那些控件类型。在下面的示例中,我选择了文本框和组合框。当.ControlSource是一个长度为零的字符串,设置控件的.Value为空。

For Each ctl In Me.Controls
    Select Case ctl.ControlType
    Case acTextBox, acComboBox ' adjust to taste
        'Debug.Print ctl.Name, Len(ctl.ControlSource)
        If Len(ctl.ControlSource) = 0 Then
            ctl.value = Null
        End If
    Case Else
        ' pass
    End Select
Next

关于ms-access - 循环遍历表单上所有未绑定(bind)的控件并清除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15348730/

相关文章:

vba - Access 2013 运行时中未显示启动窗体

sql - 如何 "count"表中同一列的两个不同标准?

java - java动态连接任意access数据库

perl+ VBA : raise click event on a button embedded in a Powerpoint slide

vba - 根据Excel中的时间列更改日期列

ms-access - "Operation not supported in transactions"在 Access 中复制/粘贴记录时

ms-access - Access查询中如何选择前10条?

forms - MS Access 表单 - Enter 键不会移动到新行

excel - 使用 VBA 在电子邮件正文中插入文本

ms-access - 从 Access 2000/2003 迁移到 Access 2010