Welcome to the Excel Forum

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed.

Seo Services company Manchester

Please Register to Remove these Ads

Please Register to Remove these Ads



Reply
  #1  
Old 01-01-2006, 02:38 AM
peter.thompson peter.thompson is offline
Forum Contributor
 
Join Date: 16 Dec 2005
Posts: 161
peter.thompson is becoming part of the community
Code bug help please

Please Register to Remove these Ads

I have a userform with several textboxes that I want only numeric data to be eneterd. Here is a sample of the code I have used for this:

Private Sub OnlyNumbers()
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, only numbers allowed", 64, "Error Message"
.Value = vbNullString
End If
End With
End Sub

Private Sub txtPrice_Change()
OnlyNumbers
txtPrice.Text = Format(txtPrice.Text, "#,##")
End Sub

Question 1

When setting up the tab order, I have set up #1 a textbox that can take any alphanumeric characters, hence I have no 'formatting' code for this box.

The problem is I get the 'onlynumbers error message' come up when the form is opened. If I move the alphanumeric box down to number 2 in the tab order, the problem goes away!

Question 2

I i want a textbox to contain the format "$ #,##" what do I need to do to the OnlyNumbers Private Sub to cater for the $ symbol and only numeric data?


Any help much appreciated and a happy new year to everyone

Cheers

Peter (new to VBA)
Reply With Quote
  #2  
Old 01-01-2006, 08:55 AM
Tushar Mehta
Guest
 
Posts: n/a
Re: Code bug help please

IMO, checking every keystroke is a very user-hostile design. Yes,
people may make mistakes. Give them a chance to correct their own
mistakes. I would associate all my validation with the OK button code.
Here's a structural skeleton:

Option Explicit

Sub doErrorMsg(x As MSForms.TextBox)
MsgBox "Must be a whole number"
x.SetFocus
End Sub
Function CurrencyOnly(x As MSForms.TextBox)
CurrencyOnly = True
If Not IsNumeric(x.Text) Then
doErrorMsg x
CurrencyOnly = False
Else
Dim y As Double
y = CDbl(x.Text)
If y \ 1 <> y Then
doErrorMsg x
CurrencyOnly = False
End If
End If
End Function
Private Sub OK_Click()
If CurrencyOnly(Me.TextBox1) Then
Else
End If
End Sub


--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article <peter.thompson.20y3om_1136101201.8501@excelforum-
nospam.com>, peter.thompson.20y3om_1136101201.8501@excelforum-
nospam.com says...
>
> I have a userform with several textboxes that I want only numeric data
> to be eneterd. Here is a sample of the code I have used for this:
>
> Private Sub OnlyNumbers()
> With Me.ActiveControl
> If Not IsNumeric(.Value) And .Value <> vbNullString Then
> MsgBox "Sorry, only numbers allowed", 64, "Error Message"
> Value = vbNullString
> End If
> End With
> End Sub
>
> Private Sub txtPrice_Change()
> OnlyNumbers
> txtPrice.Text = Format(txtPrice.Text, "#,##")
> End Sub
>
> Question 1
>
> When setting up the tab order, I have set up #1 a textbox that can take
> any alphanumeric characters, hence I have no 'formatting' code for this
> box.
>
> The problem is I get the 'onlynumbers error message' come up when the
> form is opened. If I move the alphanumeric box down to number 2 in the
> tab order, the problem goes away!
>
> Question 2
>
> I i want a textbox to contain the format "$ #,##" what do I need to do
> to the OnlyNumbers Private Sub to cater for the $ symbol and only
> numeric data?
>
>
> Any help much appreciated and a happy new year to everyone
>
> Cheers
>
> Peter (new to VBA)
>
>
> --
> peter.thompson
> ------------------------------------------------------------------------
> peter.thompson's Profile: http://www.excelforum.com/member.php...o&userid=29686
> View this thread: http://www.excelforum.com/showthread...hreadid=497225
>
>

Reply With Quote
  #3  
Old 01-01-2006, 02:00 PM
Tom Ogilvy
Guest
 
Posts: n/a
Re: Code bug help please

No argument with Tushar's recommendation, but if you want to continue with
what you have:

Private Sub OnlyNumbers()
Dim sStr as String
With Me.ActiveControl
' If .Name <> "TextBox1" Then
sStr = Replace(Replace(.Value, ",", ""), "$", "")
If Not IsNumeric(sStr) And sStr <> vbNullString Then
MsgBox "Sorry, only numbers allowed", 64, "Error Message"
.Value = vbNullString
End If
' End If
End With
End Sub

Private Sub txtPrice_Change()
Dim sStr as String
OnlyNumbers
sStr = Replace(Replace(TxtPrice.Value, ",", ""), _
"$", "")
TxtPrice.Text = Format(sStr, "$ #,###")
End Sub

Assuming the alphanumeric textbox is named TextBox1. Change to suit.

--
Regards,
Tom Ogilvy




"peter.thompson"
<peter.thompson.20y3om_1136101201.8501@excelforum-nospam.com> wrote in
message news:peter.thompson.20y3om_1136101201.8501@excelforum-nospam.com...
>
> I have a userform with several textboxes that I want only numeric data
> to be eneterd. Here is a sample of the code I have used for this:
>
> Private Sub OnlyNumbers()
> With Me.ActiveControl
> If Not IsNumeric(.Value) And .Value <> vbNullString Then
> MsgBox "Sorry, only numbers allowed", 64, "Error Message"
> Value = vbNullString
> End If
> End With
> End Sub
>
> Private Sub txtPrice_Change()
> OnlyNumbers
> txtPrice.Text = Format(txtPrice.Text, "#,##")
> End Sub
>
> Question 1
>
> When setting up the tab order, I have set up #1 a textbox that can take
> any alphanumeric characters, hence I have no 'formatting' code for this
> box.
>
> The problem is I get the 'onlynumbers error message' come up when the
> form is opened. If I move the alphanumeric box down to number 2 in the
> tab order, the problem goes away!
>
> Question 2
>
> I i want a textbox to contain the format "$ #,##" what do I need to do
> to the OnlyNumbers Private Sub to cater for the $ symbol and only
> numeric data?
>
>
> Any help much appreciated and a happy new year to everyone
>
> Cheers
>
> Peter (new to VBA)
>
>
> --
> peter.thompson
> ------------------------------------------------------------------------
> peter.thompson's Profile:

http://www.excelforum.com/member.php...o&userid=29686
> View this thread: http://www.excelforum.com/showthread...hreadid=497225
>



Reply With Quote
  #4  
Old 01-01-2006, 04:18 PM
peter.thompson peter.thompson is offline
Forum Contributor
 
Join Date: 16 Dec 2005
Posts: 161
peter.thompson is becoming part of the community
Thanks Tushar and Tom, much appreciated!

Cheers

Peter
Reply With Quote


Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Forum Jump