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