J'utilise un morceau de code qui définit avec succès la couleur d'arrière-plan des contrôles sur un formulaire. Et j'utilise des bits similaires de code pour définir la couleur de fond des champs obligatoires etc ..Problème avec les sous-formulaires de feuille de données utilisant la récursivité pour définir les propriétés de contrôle dans le formulaire
Public Sub colCtrlNorm(frm As Form)
Dim setColour As String
setColour = RGB(252, 252, 252)
Dim ctl As Control
For Each ctl In frm.Controls
With ctl
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
ctl.BackColor = setColour
ElseIf ctl.ControlType = acSubform Then
colCtrlNorm frm(ctl.Name).Form
End If
End With
Next ctl
Set ctl = Nothing
End Sub
Tout fonctionne très bien et dandy, sauf sur un formulaire qui contient un sous-formulaire qui a imbriqué fiche.
Lorsque piégeant l'erreur que je reçois le message d'erreur suivant:
Error 2455: You entered an expression that has an invalid reference to the property Form/Report
J'apprécie je ne peux pas changer les commandes de fiche technique couleur de fond. Ce problème ne se pose qu'avec les fiches de données imbriquées. Quelqu'un a des idées sur la façon dont je peux éviter cela?
Merci d'avance pour toute assistance concernant ce problème.
Vive Noel
Je devine ici (je posterais une réponse si je savais que c'était correct), mais je pense que vous devriez vérifier pour voir si le parent du contrôle de sous-formulaire est en feuille de données, et l'ignorer si. Une feuille de données est un formulaire, donc une sous-feuille de données est un sous-formulaire, mais celui qui est l'enfant d'un formulaire en mode Feuille de données. –
@David Yep, ça marche en vérifiant si la vue par défaut est en tant que datasheet – noelmcg