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 |