Handle dialogs with one line of code by encapsulating the show method within the form in a public function. This makes the form/dialog reusable and simpler to implement and update. Example:
Form: frmLogin Option Explicit Public Enum LoginReturns LoginFailed = 0 LoginSuccess = 1 End Enum Private mReturn As Long Private mDefaultUserName As String Public Function ShowLogin(Optional DefaultUserName As String, Optional OwnerForm) As LoginReturns mDefaultUserName = DefaultUserName Me.Show vbModal, OwnerForm ShowLogin = mReturn End Function Private Sub cmdLogin_Click() If txtUserName = "user" And txtPassword = "test" Then mReturn = LoginSuccess SaveSetting App.Title, "Settings", "LastUser", txtUserName Unload Me Else MsgBox "Invalid password/user!", vbInformation End If End Sub Private Sub Form_Load() txtUserName = mDefaultUserName End Sub Private Sub cmdCancel_Click() Unload Me End Sub Module: mdlMain [Startup: Sub Main] Option Explicit Public Sub Main() Dim frmForm As frmLogin Set frmForm = New frmLogin Select Case frmForm.ShowLogin(GetSetting(App.Title, "Settings", "LastUser")) Case LoginSuccess MsgBox "Login: Success!", vbInformation Case LoginFailed MsgBox "Login: Failed!", vbInformation Case Else MsgBox "Login: Unknown!", vbInformation End Select End Sub