Text entry validator
This module provides an example of the Multiplier program TextBox_Change event number validator code logic, plus some additional features.
In this module:
- Testing the TextBox string (this version):
If IsNumeric(InString) Or InString = "" Or InString = "-" Then
- Compared to (Multiplier version):
If Not IsNumeric(InString) And InString <> "" And InString <> "-" Then
- The UserForm initialize event (applying the color scheme)
- DoEvents with animation count down timer
- Coding the UserForm [X] button (forces use of the Close button, which in turn is coded to halt the animation)
0. The interface
The animation in figure 1 is produced by the code in this module.

1. the VBA code
1.1 txtEntry change event
txtEntry is written with series of VBA OR functions. The OR function returns TRUE if any of the conditions are TRUE.
Code 1: Sub
txtEntry_Change filters the InString variable. TextBox_Change event
Private Sub txtEntry_Change()
Dim InString As String
Dim Allowable As Boolean
InString = txtEntry.Value
' check for numeric, blank (backspace clear), or minus
If IsNumeric(InString) _
Or InString = "" _
Or InString = "-" Then
Allowable = True
Else
Allowable = False
End If
If Allowable = True Then
Number1 = Val(InString)
Image1.Visible = True
Else
Image1.Visible = False
End If
End Sub
'
1.2 Other UserForm code
Code 2: maintenance code for UserForm
' ================================ ' 1. Module declarations Option Explicit ' module scope declaration Dim Number1 As Double Dim ExitDemo As Boolean '
' ================================
' 2. Initialize event
Private Sub UserForm_Initialize()
Me.BackColor = RGB(214, 232, 243)
Label1.BackColor = RGB(214, 232, 243)
Label2.BackColor = RGB(214, 232, 243)
Label3.BackColor = RGB(214, 232, 243)
cmdClose.BackColor = RGB(55, 96, 146)
cmdClose.ForeColor = RGB(252, 252, 252)
txtEntry.BackColor = RGB(255, 255, 255)
With cmdDemo
.Caption = "Demo"
.BackColor = RGB(55, 96, 146)
.ForeColor = RGB(252, 252, 252)
End With
End Sub
' Command buttons
' ================================
' 3.1. Button Click event
Private Sub cmdDemo_Click()
Dim txt() As Variant
Dim i As Long
txt = Array("a", "", "-", "+", "123", "$", "End of demo", "End of demo", "")
txtEntry.BackColor = RGB(204, 253, 204)
For i = LBound(txt) To UBound(txt)
If ExitDemo Then Exit For ' check for cmdClose event
Me.txtEntry.Value = txt(i) ' write value from txt variant array by index number
Application.Wait (Now + TimeValue("0:00:01"))
cmdDemo.Caption = UBound(txt) - i - 1 ' cmdDemo is in count down mode
DoEvents ' write txtEntry.Value immediately
Next i
cmdDemo.Caption = "Demo" ' cmdDem is Reset to default caption
txtEntry.BackColor = RGB(255, 255, 255)
End Sub
' ================================
' 3.2. Button Click event
Private Sub cmdClose_Click()
ExitDemo = True ' ExitDemo needed by cmdDemo If...Then construct
Unload Me
End Sub
' ================================
' 4. Form [X] cancel button
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Sorry you must use Close Button", , "" ' force use of cmdClose
Cancel = True
End If
End Sub
'
'
- Download: xlf-text-entry-validator.xlsm [40 KB ]
- Download: frmTextEntryValidator.frm (VBA code) [3 KB ]
- Download: frmTextEntryValidator.frx (form image) [6 KB ]
- Development platform: Office 365 ProPlus - Excel 2016 MSO (16.0...) 64 bit
- Published: 18th May 2018
- Revised: Friday 24th of February 2023 - 02:38 PM, Pacific Time (PT)
