check is input textboxes is numeric on userform

  • Thread starter Thread starter Jean-Pierre D via OfficeKB.com
  • Start date 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
 
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)
 
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.
 
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
 
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
 
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
 
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]
 
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
 
Back
Top