一次将标签分配给给定类型的多个控件

时间:2017-05-09 17:40:37

标签: forms ms-access access-vba

我在Microsoft Access中有一个数据库,我为其设计了一个前端。大约有35个表单/子表单,因此有数百个控件。我有一个整个前端的审计结构,但它需要为每个文本框控件添加一个标记。

有一种简单的方法吗?否则它将非常手动,乏味且耗时。我宁愿写一些代码来自动化为所有文本框控件设置标记的过程。

2 个答案:

答案 0 :(得分:0)

您可以在单一表单中使用以下代码:

Public Sub AssignTag()
    Dim control As Variant
    For Each control In Me.Controls
        If control.ControlType = acTextBox Then
            control.Tag = "MyTag"
        End If
    Next
End Sub

然后你必须在布局视图中打开表单,更改内容,保存表单,并可能更改事物,以使更改棒(使用VBA更改控件不会持久,除非您进行其他更改在布局视图中)。

答案 1 :(得分:0)

循环浏览AllForms,在设计模式下打开每个Form,将标记设置为所有TextBox控件,保存并退出。

Public Sub SetControlsTag()
    On Error GoTo ErrProc

    Dim obj As AccessObject, frm As Form, ctl As Control

    For Each obj In CurrentProject.AllForms

        'Open in design mode
        DoCmd.OpenForm CurrentProject.AllForms(obj.Name).Name, acDesign
        Set frm = Forms(obj.Name)

        'Set tags
        For Each ctl In frm.Controls
            If ctl.ControlType = acTextBox Then ctl.Tag = "Whatever..."
        Next ctl

        'Close
        DoCmd.Close acForm, frm.Name, acSaveYes
        Set frm = Nothing
    Next obj

Leave:
    Set frm = Nothing
    On Error GoTo 0
    Exit Sub

ErrProc:
    MsgBox Err.Description
    Resume Leave
End Sub