ForceNumTxt




Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

' Force a TextBox control to accept only numeric digits

' Cancel the effect by passing Force = False

'

' Note that it only accepts positive integer values


Sub ForceTextBoxNumeric(TextBox As TextBox, Optional Force As Boolean = True)
Dim style As Long
Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000

' get current style

style = GetWindowLong(TextBox.hWnd, GWL_STYLE)
If Force Then
style = style Or ES_NUMBER
Else
style = style And Not ES_NUMBER
End If
' enforce new style

SetWindowLong TextBox.hWnd, GWL_STYLE, style
End Sub













( forcenumtxt.html )- by Paolo Puglisi - Modifica del 17/12/2023