You should lock controls (that have the .locked property) rather than setting .enabled = false.
Why? Grey text in a disabled field is less readable. Also, blank fields give no indication that they are disabled, since there is no text to make gray. Disabling a control also disables the mouseover and tooltip properties, which may be useful to have at all times. If you wish to permit the user to select and copy text (but not write) from a field, disabling it prevents this usage.
Preferred method is to lock controls which have the .locked properties and change the background color to a light gray or light pastel color. Leave the foreground color black (this is a visual indication that the field is locked and not editable, but is still quite readable). This prevents user frustration from trying to tab to or click on empty fields and finding they are disabled.
Try using this routine:
Public Sub LockControl(cc As Control, LockedFlag As
'locks given control (changes .locked, .tabstop,
Const kLockedBackcolor = &HC0C0C0
Const kUnlockedBackcolor = &HFFFFFF
On Error GoTo ErrTrap
If LockedFlag Then
cc.Locked = True
cc.TabStop = False
cc.BackColor = kLockedBackcolor
cc.Locked = False
cc.TabStop = True
cc.BackColor = kUnlockedBackcolor
Resume 'debug only
If Err = 380 Then Resume Next 'Invalid property
value, some controls don't have property
MsgBox Err & " " & Error & " in lockcontrol "