So why do you have code to set everything invisible BEFORE you save the record? And you aren't really saving the record but are trying to do it by default when moving to a new record.
I would try changing your code by adding this to the top of it:
Code:
If Me.Dirty Then Me.Dirty = False
which will force the save and THEN you can set everything's visible property and move to a new record if you wish.
But I would also use the TAG of the controls and set it to be something like
CVisible
and then you can just iterate through using shorter code:
Code:
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag = "CVisible" Then
ctl.Visible = False
End If
Next