0

フォーム上のすべてのコントロールをループし、テキストボックス/コンボボックス/リストボックスの場合はイベントを適用する関数を作成します。この関数は、コントロールがサブフォームであるかどうかもテストし、サブフォーム コントロールに対して同じ関数を実行します。私が抱えている問題は、サブフォームに別のサブフォームがある場合、コントロールをループできないことです。

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")
4

1 に答える 1