To minimize the number of controls on my forms, I use a text box as a floating input control that I either overlay onto a grid or swap with a label. Here is my swap subroutine:
Public Sub SwapControls(cHide As Control, _ cShow As Control, Optional Value) With cHide .Visible = False cShow.Move .Left, .Top, .Width, .Height End With If IsMissing(Value) Then If TypeOf cShow Is TextBox Or _ TypeOf cShow Is Label Then cShow = cHide End If Else cShow = Value End If With cShow .Visible = True .ZOrder If TypeOf cShow Is TextBox Then .SelStart = 0 .SelLength = Len(cShow) If .Visible Then .SetFocus End If End If End WithEnd Sub
When I enter the statement “SwapControls lblData, txtData,” lblData disappears and txtData appears in its place with the value of lblData selected and the focus set to it. After you make your entry, execute the statement “SwapControls txtData, lblData.”