check is input textboxes is numeric on userform

  • Thread starter Jean-Pierre D via OfficeKB.com
  • Start date
J

Jean-Pierre D via OfficeKB.com

Hi,

I have a multipage userform.
on one of the pages there are 10 text boxes that may only contain numbers( or
a percentage)

I now use the following code:

Private Sub nw_premieNP_change()
OnlyNumbers
End Sub

and then the following sub:

Private Sub OnlyNumbers()
With nw_premieNP.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, alleen getallen toegestaan"
.Value = vbNullString
End If
End With
End Sub

This works perfectly but i have to do this for each textbox. so i get 20 subs
!
Is there a better way to do this for all the textboxes in the userform page?

Thanks,
Jean-Pierre
 
B

Bob Phillips

Pass the control to the Sub

Private Sub nw_premieNP_change()
OnlyNumbers nw_premieNP
End Sub

Private Sub nw_secondNP_change()
OnlyNumbers nw_secondNP
End Sub


and then the following sub:

Private Sub OnlyNumbers(ctl As Object)
With ctl.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, alleen getallen toegestaan"
.Value = vbNullString
End If
End With
End Sub


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
G

Guest

I don't know any way to do this unless you are willing to create a custom
class. For the 20 textboxes you have it is probably easiest just to do as
you have done. If you think you may need to do this repeatedly in the
future, look into class modules and custom classes to create your own objects
that use existing objects but add new features and functionality. Too much
to get into here but lots of online references if you search.
 
J

Jean-Pierre D via OfficeKB.com

thanks Bob, this works for me!
JP

Bob said:
Pass the control to the Sub

Private Sub nw_premieNP_change()
OnlyNumbers nw_premieNP
End Sub

Private Sub nw_secondNP_change()
OnlyNumbers nw_secondNP
End Sub

and then the following sub:

Private Sub OnlyNumbers(ctl As Object)
With ctl.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, alleen getallen toegestaan"
.Value = vbNullString
End If
End With
End Sub
[quoted text clipped - 25 lines]
Thanks,
Jean-Pierre
 
J

Jean-Pierre D via OfficeKB.com

Hi Bob,

I get an error message on the 'ctl.active.control' in your onlynumbers sub....

any ideas for improvement ?
Thanks,
JP

Bob said:
Pass the control to the Sub

Private Sub nw_premieNP_change()
OnlyNumbers nw_premieNP
End Sub

Private Sub nw_secondNP_change()
OnlyNumbers nw_secondNP
End Sub

and then the following sub:

Private Sub OnlyNumbers(ctl As Object)
With ctl.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, alleen getallen toegestaan"
.Value = vbNullString
End If
End With
End Sub
[quoted text clipped - 25 lines]
Thanks,
Jean-Pierre
 
B

Bob Phillips

JP,

I got that also, but as the ActiveControl property was part of your original
code, I thought it must work for you.

What is ActiveControl?

--

HTH

RP
(remove nothere from the email address if mailing direct)


Jean-Pierre D via OfficeKB.com said:
Hi Bob,

I get an error message on the 'ctl.active.control' in your onlynumbers sub....

any ideas for improvement ?
Thanks,
JP

Bob said:
Pass the control to the Sub

Private Sub nw_premieNP_change()
OnlyNumbers nw_premieNP
End Sub

Private Sub nw_secondNP_change()
OnlyNumbers nw_secondNP
End Sub

and then the following sub:

Private Sub OnlyNumbers(ctl As Object)
With ctl.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, alleen getallen toegestaan"
.Value = vbNullString
End If
End With
End Sub
[quoted text clipped - 25 lines]
Thanks,
Jean-Pierre
 
J

Jean-Pierre D via OfficeKB.com

Hi Bob,

activecontrol is nothing but an error in my code...sorry.
Do you know the right code tot do this?
Thanks,
JP

Bob said:
JP,

I got that also, but as the ActiveControl property was part of your original
code, I thought it must work for you.

What is ActiveControl?
[quoted text clipped - 30 lines]
 
B

Bob Phillips

Jean-Pierre,

Give the simple

With ctl

a try first.

--

HTH

RP
(remove nothere from the email address if mailing direct)


Jean-Pierre D via OfficeKB.com said:
Hi Bob,

activecontrol is nothing but an error in my code...sorry.
Do you know the right code tot do this?
Thanks,
JP

Bob said:
JP,

I got that also, but as the ActiveControl property was part of your original
code, I thought it must work for you.

What is ActiveControl?
[quoted text clipped - 30 lines]
Thanks,
Jean-Pierre
 

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