Je crée une fonction pour faire défiler tous les contrôles d'un formulaire et appliquer un événement s'il s'agit d'une zone de texte/combobox/listbox, la fonction vérifie également si le contrôle est un sous-formulaire contrôles de sous-formulaire. Le problème que j'ai est s'il y a un autre sous-formulaire dans le sous-formulaire, je ne peux pas passer en revue les contrôles.Contrôle de sous-formulaire dans le sous-formulaire
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
Si j'essayez ce qui suit cela fonctionne:
Debug.Print Forms!frmHR_Details!frm_HRDetails2.Form!HRSubForm2.Form!sID
Mais cela n'a pas, pourquoi?
Debug.Print Forms("frmHR_Details").Form("frm_HRDetails2").Form.Form("HRSubForm2").Form.sID.Value
Ou est-il peut-être pas une façon de le faire:
set ctl = Eval("Forms!frmHR_Details!frm_HRDetails2.Form!HRSubForm2.Form!sID")
Au lieu de 'FRM (ctl.Name) .Form', essayez' ctl.Form'. – Andre
Toujours ne fonctionne pas –
Eh bien, puisque le sous-formulaire n'est pas vraiment un formulaire et la fonction s'attend à ce qu'un objet de formulaire pour faire défiler ses contrôles, ne fonctionnera pas. – June7