Textbox values

B

Brad

I have a userform with some text boxes on them. I need to find a way to
restrict what the user can enter to integer values only. Any suggestions?
 
D

Dave Peterson

This'll stop the typing of anything but digits:

Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
'numbers
Case Asc("0") To Asc("9")
'ok
Case Else
KeyAscii = 0
Beep
End Select
End Sub
 
R

Rick Rothstein

Copy/Paste the following code into the UserForm's code window (change the
TextBox1 references to the name of the TextBox the code is to apply to).
Each TextBox will an identical set of code... besides changing the TextBox1
names to your actual TextBox's name, you will also have to create a
LastPosition2, LastPosition3, etc. for the other TextBoxes and you will have
to change the LastPosition1 references to these new LastPositionX names for
each group of code.

' Last position flag for TextBox1
Dim LastPosition1 As Long

'********** Start Code For TextBox1 **********
Private Sub TextBox1_Change()
Static LastText As String
Static SecondTime As Boolean
If Not SecondTime Then
With TextBox1
If .Text Like "*[!0-9]*" Then
Beep
SecondTime = True
.Text = LastText
.SelStart = LastPosition1
Else
LastText = .Text
End If
End With
End If
SecondTime = False
End Sub

Private Sub TextBox1_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
With TextBox1
LastPosition1 = .SelStart
'Place any other MouseDown event code here
End With
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With TextBox1
LastPosition1 = .SelStart
'Place any other KeyPress checking code here
End With
End Sub
'********** End Code For TextBox1 **********
 
R

Rick Rothstein

This'll stop the typing of anything but digits:

But, so the OP knows, it will not stop the pasting of non-digits into the
TextBox (see the code I posted elsewhere in this thread for a method that
will stop all attempts to enter non-digits, whether typed or pasted).
 
D

Dave Peterson

That's what I meant by typing <vbg>.

But I could/should have been more explicit.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top