我构建了一个函数来遍历窗体上的所有控件并应用一个事件,如果它是一个文本框/组合框/列表框,该函数还会测试该控件是否为子窗体并为该窗体运行相同的函数子窗体控件。我遇到的问题是如果子窗体中有另一个子窗体,我无法循环控件。子窗体内的子窗体控件
Public Function FE_LoopThroughAllControlsNumLockOn(frm As Form)
Dim ctl As control
For Each ctl In frm
If ctl.ControlType = acSubform Then
Call FE_LoopThroughAllControlsNumLockOn(frm(ctl.Name).Form) 'Error here on subform within subform
ElseIf xIsControlForEventNumLock(ctl.ControlType) = True Then
ctl.OnGotFocus = "=FM_NUM_ON()"
End If
Next ctl
Set ctl = Nothing
End Function
Function xIsControlForEventNumLock(vControlType As AcControlType) As Boolean
Select Case vControlType
Case Is = acComboBox: xIsControlForEventNumLock = True
Case Is = acListBox: xIsControlForEventNumLock = True
Case Is = acTextBox: xIsControlForEventNumLock = True
Case Else: xIsControlForEventNumLock = False
End Select
End Function
如果我尝试以下工作原理:
Debug.Print Forms!frmHR_Details!frm_HRDetails2.Form!HRSubForm2.Form!sID
但是,这不,为什么呢?
Debug.Print Forms("frmHR_Details").Form("frm_HRDetails2").Form.Form("HRSubForm2").Form.sID.Value
还是有可能不是一个办法做到这一点:
set ctl = Eval("Forms!frmHR_Details!frm_HRDetails2.Form!HRSubForm2.Form!sID")
代替'FRM(ctl.Name).Form',尽量'ctl.Form'。 – Andre
仍然不起作用 –
那么,因为子表单不是一个真正的表单,而且函数需要一个表单对象来循环它的控件,所以不起作用。 – June7