Ich verwende ein Stück Code, der die Hintergrundfarbe von Steuerelementen in einem Formular erfolgreich festlegt. Und ich verwende Ähnliche Bits von Code, um die Hintergrundfarbe der erforderlichen Felder zu setzen etc ..Problem mit Datenblattunterformularen, die Rekursion verwenden, um Steuerelementeigenschaften in Formular festzulegen
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
Alles funktioniert gut und gut, außer auf einem Formular, das ein Unterformular enthält das Datenblatt verschachtelt ist.
Wenn die Fehler Trapping ich die folgende Fehlermeldung erhalten:
Error 2455: You entered an expression that has an invalid reference to the property Form/Report
Ich schätze ich kann das Datenblatt Kontrollen Hintergrundfarbe ändern. Dieses Problem tritt nur bei verschachtelten Datenblättern auf. Irgendwelche Ideen, wie ich das vermeiden kann?
Vielen Dank im Voraus für jegliche Hilfe bei diesem Problem.
Prost Noel
Ich rate hier (ich würde eine Antwort posten, wenn ich wusste, dass es korrekt war), aber ich denke, Sie sollten überprüfen, ob das Elternteil des Unterformular-Steuerelement in der Datenblattansicht ist, und überspringen Sie es wenn. Ein Datenblatt ist ein Formular, daher ist ein Unterdatenblatt ein Unterformular, aber eines, das das untergeordnete Element eines Formulars in der Datenblattansicht ist. –
@David Yep, hat es funktioniert, indem Sie überprüfen, ob die Standardansicht als Datenblatt ist – noelmcg