我正在嘗試遍歷 Ms Access 中選定的表單串列。就像我們可以通過這種方式在 Excel 中使用表格一樣
For Each shtSheet In ThisWorkbook.Worksheets(Array("Sheet2", "Sheet1"))
有沒有辦法在 Access 中為表單做一些類似的事情?
提前致謝。
uj5u.com熱心網友回復:
例如
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)如果沒有加載表單就會失敗。
uj5u.com熱心網友回復:
您可以將它們列為物件:
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
uj5u.com熱心網友回復:
@storax @gustav 你們兩個都給出了我要求的完美解決方案。
至于我,我最終將表單名稱放在一個表中,然后通過記錄集呼叫它們。
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
只是提出我的解決方案,以便它可以幫助其他任何人。
如果有人在我的代碼中發現我的任何錯誤,或者可以讓我知道比這更好的東西,我將不勝感激。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432766.html
上一篇:for回圈之前的字串
