Further to my suggestion to use the control tag property, here's what I could have (should have?) posted as an example
Code:
Private Sub Form_Current()
Dim ctl As Control
If Me.NewRecord Then
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then ctl = ctl.Tag
Next
End If
End Sub
It may be a bit too simplistic for your situation (e.g. you may have multiple control types to deal with), but I think it's quite adaptable.
Also, if you wish to prevent saving a record where one or more controls still contains a tag value, something like this (untested)
Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
If ctl = ctl.Tag Then
Cancel = True
MsgBox "Must change all default values before leaving or saving this record."
Exit For
End If
End If
Next
End Sub
One thing I didn't mention earlier was that I don't agree with using the control name as an initial value. That's because controls and fields should follow any generally accepted naming convention. This means that an initial value of txtPOSDate (as an example) would confuse most users. IF all of the labels for the applicable controls are associated/attached to the control, the validation (BeforeUpdate event) can present a list of label names, which are likely more meaningful to a user than some cryptic control name. I realize the goal here is to not have labels, but I thought the point worth mentioning for future consideration when validating multiple controls.