如何循环访问 Ms Access 中选定的表单列表

how to loop through selected list of forms in Ms Access

我正在尝试循环访问 Ms Access 中选定的表单列表。 就像我们可以用 Excel 中的工作表这样

For Each shtSheet In ThisWorkbook.Worksheets(Array("Sheet2", "Sheet1"))

有没有办法在 Access for forms 中做一些类似的事情?

提前致谢。

例如

Dim f As Form
Dim arr
arr = Array("Form1", "Form2")
Dim element

For Each element In arr
    Set f = Forms(element)
Next

但如果未加载表单,set f= Forms(element) 将会失败。

您可以将它们列为对象:

Public Function ListSomeForms()

    Dim Form        As Object
    Dim FormNames   As Variant
    Dim Item        As Variant
    
    FormNames = Array("FormName1", "FormName2")
    
    For Each Item In FormNames    
        Set Form = CurrentProject.AllForms(Item)
        Debug.Print Form.Name, Form.IsLoaded

        ' Loop controls.
        DoCmd.OpenForm Form.Name, acDesign
        ' For Each Control In Forms(Form.Name) 
        '     Do stuff ...
        ' Next
        DoCmd.Close acForm, Form.Name

    Next

    Set Form = Nothing
    
End Function

@storax @gustav 你们两个都给出了我要求的完美解决方案。

至于我,我最终将表单名称放在 table 中,然后通过记录集调用它们。

Set db = CurrentDb
Set rs = db.OpenRecordset("tsubforms")

Do Until rs.EOF
Set frm = rs!SubForm

With frm
    DoCmd.OpenForm frm, acViewDesign, , , , acHidden
    For Each ctrl In Forms(frm).Controls
            Debug.Print ctrl.Name
End With
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing

只是提出我的解决方案,如果它可以帮助其他人。

如果有人发现我的代码中有任何错误,或者可以让我知道比这更好的东西,我将不胜感激。