Only Numbers

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Rowan Chapman

    Only Numbers

    Hey all!
    I'm kinda new to VB but not to programin'.
    So I know what it is like when you are asked trivial questions.
    Could some1 please tell me what the syntax would be 2 only allow numerical
    data into a textbox. thankz in advanced -Ro

    --------------------------------------------------------------------
    " Reality is an illusion caused by lack of alcohol. "
    --------------------------------------------------------------------









  • Sado

    #2
    Re: Only Numbers

    Rowan Chapman wrote:[color=blue]
    > Hey all!
    > I'm kinda new to VB but not to programin'.
    > So I know what it is like when you are asked trivial questions.
    > Could some1 please tell me what the syntax would be 2 only allow numerical
    > data into a textbox. thankz in advanced -Ro
    >
    > --------------------------------------------------------------------
    > " Reality is an illusion caused by lack of alcohol. "
    > --------------------------------------------------------------------
    >[/color]

    You could use isNumeric() in the Change, LostFocus or Validate event for
    the textbox.


    --
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d-@ s:- a C++ ULS>++ P L+>+++ E- W++ N++ o? K- w(++)>+++$
    !O M- V? PS PE Y+ PGP- t 5 X+ R- tv++ b+ DI D+ G e++ h+ r++ y+
    ------END GEEK CODE BLOCK------

    Comment

    • Rick Rothstein

      #3
      Re: Only Numbers

      From a previous post of mine...

      I usually try and steer people away from using IsNumeric to "proof"
      supposedly numeric text. Consider this (also see note at end of post):

      ReturnValue = IsNumeric("($1, 23,,3.4,,,5,,E6 7$)")

      Most people would not expect THAT to return True. IsNumeric has some "flaws"
      in what it considers a proper number and what most programmers are looking
      for.

      I had a short tip published by Pinnacle Publishing in their Visual Basic
      Developer magazine that covered some of these flaws. Originally, the tip was
      free to view but is now viewable only by subscribers.. Basically, it said
      that IsNumeric returned True for things like -- currency symbols being
      located in front or in back of the number as shown in my example (also
      applies to plus, minus and blanks too); numbers surrounded by parentheses as
      shown in my example (some people use these to mark negative numbers);
      numbers containing any number of commas before a decimal point as shown in
      my example; numbers in scientific notation (a number followed by an upper or
      lower case "D" or "E", followed by a number equal to or less than 305 -- the
      maximum power of 10 in VB); and Octal/Hexadecimal numbers (&H for
      Hexadecimal, &O or just & in front of the number for Octal).

      NOTE:
      ======
      In the above example and in the referenced tip, I refer to $ signs and
      commas and dots -- these were meant to refer to your currency, thousands
      separator and decimal point symbols as defined in your local settings --
      substitute your local regional symbols for these if appropriate.

      As for the question about checking numbers, here are two functions that I
      have posted in the past for similar questions..... one is for digits only
      and the other is for "regular" numbers:

      Function IsDigitsOnly(Va lue As String) As Boolean
      IsDigitsOnly = Len(Value) > 0 And _
      Not Value Like "*[!0-9]*"
      End Function

      Function IsNumber(ByVal Value As String) As Boolean
      ' Leave the next statement out if you don't
      ' want to provide for plus/minus signs
      If Value Like "[+-]*" Then Value = Mid$(Value, 2)
      IsNumber = Not Value Like "*[!0-9.]*" And _
      Not Value Like "*.*.*" And _
      Len(Value) > 0 And Value <> "." And _
      Value <> vbNullString
      End Function

      Rick - MVP


      "Sado" <oingo@boingo.n et> wrote in message
      news:8Vk1c.5108 6$mU6.207524@ne wsb.telia.net.. .[color=blue]
      > Rowan Chapman wrote:[color=green]
      > > Hey all!
      > > I'm kinda new to VB but not to programin'.
      > > So I know what it is like when you are asked trivial questions.
      > > Could some1 please tell me what the syntax would be 2 only allow[/color][/color]
      numerical[color=blue][color=green]
      > > data into a textbox. thankz in advanced -Ro
      > >
      > > --------------------------------------------------------------------
      > > " Reality is an illusion caused by lack of alcohol. "
      > > --------------------------------------------------------------------
      > >[/color]
      >
      > You could use isNumeric() in the Change, LostFocus or Validate event for
      > the textbox.
      >
      >
      > --
      > -----BEGIN GEEK CODE BLOCK-----
      > Version: 3.12
      > GCS d-@ s:- a C++ ULS>++ P L+>+++ E- W++ N++ o? K- w(++)>+++$
      > !O M- V? PS PE Y+ PGP- t 5 X+ R- tv++ b+ DI D+ G e++ h+ r++ y+
      > ------END GEEK CODE BLOCK------[/color]


      Comment

      • Rick Rothstein

        #4
        Re: Only Numbers

        > Hey all![color=blue]
        > I'm kinda new to VB but not to programin'.
        > So I know what it is like when you are asked trivial questions.
        > Could some1 please tell me what the syntax would be 2 only allow numerical
        > data into a textbox. thankz in advanced -Ro[/color]

        First off, what do you mean by "numerical data"... digits only or floating
        point numbers? Next, by "only allow", do you mean *while* the user is typing
        in his/her entry? Or do you mean a way to check it *after* the entry is
        completed (like from the Click event of an "I'm Done" type of
        CommandButton)? Most people consider the latter to be a better interface for
        the user.

        Rick - MVP


        Comment

        • Raoul Watson

          #5
          Re: Only Numbers


          "Rowan Chapman" <rnchapman@bigp ond.com> wrote in message
          news:j5i1c.8487 3$Wa.24243@news-server.bigpond. net.au...[color=blue]
          > Hey all!
          > I'm kinda new to VB but not to programin'.
          > So I know what it is like when you are asked trivial questions.
          > Could some1 please tell me what the syntax would be 2 only allow numerical
          > data into a textbox. thankz in advanced -Ro
          >[/color]

          If you want to totally not permit user to type non numeric entries into the
          textbox, then you have to intercept the keypress. Something like this (you
          can adjust it to your needs):

          Private Sub Text1_KeyPress( KeyAscii As Integer)
          Call num(KeyAscii)
          End Sub

          Private Sub num(KeyAscii As Integer)
          ' allow backspace and decimal
          If KeyAscii = 8 Or KeyAscii = 9 Or KeyAscii = Asc(".") Then Exit Sub
          ' if not a number, zero out the key (nothing shows up)
          KeyAscii = IIf(Chr$(KeyAsc ii) Like "[0-9]", KeyAscii, 0)
          End Sub


          Comment

          • Bob Butler

            #6
            Re: Only Numbers

            "Raoul Watson" <WatsonR@Intell igenCIA.com> wrote in message news:<qev1c.650 2$YN5.5297@nwrd ny03.gnilink.ne t>...[color=blue]
            > "Rowan Chapman" <rnchapman@bigp ond.com> wrote in message
            > news:j5i1c.8487 3$Wa.24243@news-server.bigpond. net.au...[color=green]
            > > Hey all!
            > > I'm kinda new to VB but not to programin'.
            > > So I know what it is like when you are asked trivial questions.
            > > Could some1 please tell me what the syntax would be 2 only allow numerical
            > > data into a textbox. thankz in advanced -Ro
            > >[/color]
            >
            > If you want to totally not permit user to type non numeric entries into the
            > textbox, then you have to intercept the keypress.[/color]

            that doesn't prevent users from pasting data

            Comment

            • Raoul Watson

              #7
              Re: Only Numbers


              "Bob Butler" <butlerbob@eart hlink.net> wrote in message
              news:fa10fb0.04 03040708.1d5aff 70@posting.goog le.com...[color=blue]
              > "Raoul Watson" <WatsonR@Intell igenCIA.com> wrote in message[/color]
              news:<qev1c.650 2$YN5.5297@nwrd ny03.gnilink.ne t>...[color=blue][color=green]
              > > "Rowan Chapman" <rnchapman@bigp ond.com> wrote in message
              > > news:j5i1c.8487 3$Wa.24243@news-server.bigpond. net.au...[color=darkred]
              > > > Hey all!
              > > > I'm kinda new to VB but not to programin'.
              > > > So I know what it is like when you are asked trivial questions.
              > > > Could some1 please tell me what the syntax would be 2 only allow[/color][/color][/color]
              numerical[color=blue][color=green][color=darkred]
              > > > data into a textbox. thankz in advanced -Ro
              > > >[/color]
              > >
              > > If you want to totally not permit user to type non numeric entries into[/color][/color]
              the[color=blue][color=green]
              > > textbox, then you have to intercept the keypress.[/color]
              >
              > that doesn't prevent users from pasting data[/color]

              Rick already addressed the validation after the data is entered.


              Comment

              • Rick Rothstein

                #8
                Re: Only Numbers

                > > > > Hey all![color=blue][color=green][color=darkred]
                > > > > I'm kinda new to VB but not to programin'.
                > > > > So I know what it is like when you are asked trivial questions.
                > > > > Could some1 please tell me what the syntax would be 2 only allow[/color][/color]
                > numerical[color=green][color=darkred]
                > > > > data into a textbox. thankz in advanced -Ro
                > > > >
                > > >
                > > > If you want to totally not permit user to type non numeric entries[/color][/color][/color]
                into[color=blue]
                > the[color=green][color=darkred]
                > > > textbox, then you have to intercept the keypress.[/color]
                > >
                > > that doesn't prevent users from pasting data[/color]
                >
                > Rick already addressed the validation after the data is entered.[/color]

                Actually, Bob's point is quite valid. Why would you attempt to block most
                non-digits, but still have to check afterward in order to take some action.
                Put another way, why would you want to block me from typing a non-digit, but
                permit me to paste one in? You would either block all attempts to input
                non-digits or permit them during data entry and validate the entry after the
                user is finished entering it (in response to a "Done" button or, maybe, the
                focus attempting to leave the TextBox). My comment was meant to side with
                the "let the user enter anything they want and parse it afterwards" crowd.
                If you want to block non-digits while typing or pasting, the following will
                do that...

                Dim LastPosition As Long

                Private Sub Text1_Change()
                Static LastText As String
                Static SecondTime As Boolean
                If Not SecondTime Then
                With Text1
                If .Text Like "*[!0-9]*" Then
                Beep
                SecondTime = True
                .Text = LastText
                .SelStart = LastPosition
                Else
                LastText = .Text
                End If
                End With
                End If
                SecondTime = False
                End Sub

                Private Sub Text1_MouseDown (Button As Integer, _
                Shift As Integer, X As Single, Y As Single)
                With Text1
                LastPosition = .SelStart
                'Place any other MouseDown event code here
                End With
                End Sub

                Private Sub Text1_KeyPress( KeyAscii As Integer)
                With Text1
                LastPosition = .SelStart
                'Place any other KeyPress checking code here
                End With
                End Sub

                Rick - MVP


                Comment

                • Raoul Watson

                  #9
                  Re: Only Numbers


                  "Rick Rothstein" <rickNOSPAMnews @NOSPAMcomcast. net> wrote in message
                  news:3sOdnTOP4Z zNUNrdRVn-gQ@comcast.com. ..[color=blue][color=green][color=darkred]
                  > > > > > Hey all!
                  > > > > > I'm kinda new to VB but not to programin'.
                  > > > > > So I know what it is like when you are asked trivial questions.
                  > > > > > Could some1 please tell me what the syntax would be 2 only allow[/color]
                  > > numerical[color=darkred]
                  > > > > > data into a textbox. thankz in advanced -Ro
                  > > > > >
                  > > > >
                  > > > > If you want to totally not permit user to type non numeric entries[/color][/color]
                  > into[color=green]
                  > > the[color=darkred]
                  > > > > textbox, then you have to intercept the keypress.
                  > > >
                  > > > that doesn't prevent users from pasting data[/color]
                  > >
                  > > Rick already addressed the validation after the data is entered.[/color]
                  >
                  > Actually, Bob's point is quite valid. Why would you attempt to block most
                  > non-digits, but still have to check afterward in order to take some[/color]
                  action.[color=blue]
                  > Put another way, why would you want to block me from typing a non-digit,[/color]
                  but[color=blue]
                  > permit me to paste one in? You would either block all attempts to input
                  > non-digits or permit them during data entry and validate the entry after[/color]
                  the[color=blue]
                  > user is finished entering it (in response to a "Done" button or, maybe,[/color]
                  the[color=blue]
                  > focus attempting to leave the TextBox). My comment was meant to side with
                  > the "let the user enter anything they want and parse it afterwards" crowd.
                  > If you want to block non-digits while typing or pasting, the following[/color]
                  will[color=blue]
                  > do that...
                  >
                  > Dim LastPosition As Long
                  >
                  > Private Sub Text1_Change()
                  > Static LastText As String
                  > Static SecondTime As Boolean
                  > If Not SecondTime Then
                  > With Text1
                  > If .Text Like "*[!0-9]*" Then
                  > Beep
                  > SecondTime = True
                  > .Text = LastText
                  > .SelStart = LastPosition
                  > Else
                  > LastText = .Text
                  > End If
                  > End With
                  > End If
                  > SecondTime = False
                  > End Sub
                  >
                  > Private Sub Text1_MouseDown (Button As Integer, _
                  > Shift As Integer, X As Single, Y As Single)
                  > With Text1
                  > LastPosition = .SelStart
                  > 'Place any other MouseDown event code here
                  > End With
                  > End Sub
                  >
                  > Private Sub Text1_KeyPress( KeyAscii As Integer)
                  > With Text1
                  > LastPosition = .SelStart
                  > 'Place any other KeyPress checking code here
                  > End With
                  > End Sub
                  >
                  > Rick - MVP
                  >
                  >[/color]

                  Excellent.. that's the way to do it (with a solution) but a post such as
                  "that doesn't prevent ..." doesn't quite help the original poster does it?


                  Comment

                  • Rowan Chapman

                    #10
                    Re: Only Numbers

                    Thanks all, your insight/input was really helpful.

                    --------------------------------------------------------------------
                    " Reality is an illusion caused by lack of alcohol. "
                    --------------------------------------------------------------------



                    "Rowan Chapman" <rnchapman@bigp ond.com> wrote in message
                    news:j5i1c.8487 3$Wa.24243@news-server.bigpond. net.au...[color=blue]
                    > Hey all!
                    > I'm kinda new to VB but not to programin'.
                    > So I know what it is like when you are asked trivial questions.
                    > Could some1 please tell me what the syntax would be 2 only allow numerical
                    > data into a textbox. thankz in advanced -Ro
                    >
                    > --------------------------------------------------------------------
                    > " Reality is an illusion caused by lack of alcohol. "
                    > --------------------------------------------------------------------[/color]



                    Comment

                    Working...