I have found the need to do multiple tests on dissimilar variables and objects with any failing test causing an action. Multiple embedded If…Then…ElseIf…EndIf statements are awful to look at and troubleshoot. I found that using Select Case does the trick and is easy to read. Consider testing several items before continuing (whether to check during entry or after is another subject). Try this:
Private Function okToPost() As Boolean ' Assume it's safe to post. okToPost = True Select Case False ' Assume you want your tests to be True ' Any tests that evaluate to False will ' trigger the case code. Case (lvDist.ListItems.Count > 0) ' Any items in a listview control? MsgBox "No Items Selected", _ vbInformation, "Post" okToPost = False Case IsNumeric(fvCheckNumber) ' Did the user enter a valid number? MsgBox "Invalid Check Number", _ vbInformation, "Post" okToPost = False fvCheckNumber.SetFocus Case (fvInvoiceAmount = fvCheckAmount) ' Does this balance? ' More case statements can follow that ' evaluate to true or false End SelectEnd Function