Form Data Validation VBA – Data Validation Examples
Data Validation: The following Microsoft Access Visual Basic code demonstrates several different forms of field validation.1) Checking if the date entered is after today’s date:
Private Sub Date_Entered_AfterUpdate()
If Me.Date_Entered>date() then ‘ Date_Entered is form field name
msgbox “Please enter a date less than or equal to today’s date.”
Me.Date_Entered.setfocus ‘ set cursor back in the date field
end if
End Sub
2) Perform data validation on the difference between two date fields is greater than 30 days.
Private Sub Date_Entered_AfterUpdate()
‘ perform data validation on date fields
If datediff(‘d’, Me.Date_Received,Me.Date_Entered) > 30 then
msgbox “Warning: The date received is more than 30 days ” & _
“past Date Entered, please verify.”
end if
End Sub
3) Validate data exists in a table. This example demonstrates a highly compressed method of programming, which I hope you would never use (we don’t).
Private Sub Emp_Name_AfterUpdate()
If Nz(DLookup(“Emp_Name”, “Employees”, “Emp_Name='” & _
Me.Emp_Name & “‘”), “zzzz”) <> “zzzz” Then MsgBox & _
“That name already exists in the employee table.”
‘ note that the two VB lines above actually need to be on one line to run the data validation
End Sub
There is a lot to data field validation forcredit card numbers. A programmer’s analysis of the numbers for each type of credit card generates a series of visual basic data validation checks shown below:
Private Sub CC_Exp_Enter()
Select Case Me.CC_Type ‘ combo box user selection field
Case 1 ‘amex
If IsNull(Me.CC_Number) = True Then
MsgBox “You must enter an AMEX number.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Len(Me.CC_Number) <> 15 Then
MsgBox “The credit card number should have 15 digits.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Left(Me.CC_Number, 1) <> “3” Then
MsgBox “AmEx numbers must start with a 3.”
Me.CC_Number.SetFocus
Exit Sub
End If
Case 3 ‘ visa
If IsNull(Me.CC_Number) = True Then
MsgBox “You must enter an Visa number.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Left(Me.CC_Number, 1) <> “4” Then
MsgBox “Visa card numbers must start with a 4.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Len(Me.CC_Number) <> 16 Then
MsgBox “This card type should have a 16 digit number.”
Me.CC_Number.SetFocus
Exit Sub
End If
Case 2 ‘ M/C
If IsNull(Me.CC_Number) = True Then
MsgBox “You must enter an MC number.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Left(Me.CC_Number, 1) <> “5” Then
MsgBox “MasterCard numbers must start with a 5.”
Me.CC_Number.SetFocus
Exit Sub
End If
If Len(Me.CC_Number) <> 16 Then
MsgBox “This card type should have a 16 digit number.”
Me.CC_Number.SetFocus
Exit Sub
End If
End Select
End Sub
Microsoft Office:
MS Access 2000 Through 2016 and Office 365 & SharePoint
Microsoft Office VBA, MS Access 2003, 2007, 2010, 2013, 2016