Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Find the first number in a string

Posted on 2012-04-10
12
Medium Priority
?
286 Views
Last Modified: 2012-04-10
If the string is "RE: 1 xxxxx" then what is the code that will returne the value 1? Thanks!
0
Comment
Question by:Sasha42
12 Comments
 
LVL 75
ID: 37830025
You can use Val(YourString)

mx
0
 
LVL 75
ID: 37830040
Now, when you say First Number ... val() will return N number of digits at the start of a string ... except ... if the first digit is zero AND there are more digits after that, the zero will get dropped.

Is the number always the first character in your string ?

If so .... the just Left(YourString, 1)


mx
0
 
LVL 96

Expert Comment

by:Lee W, MVP
ID: 37830092
varString = "Re: 1 xxx"

For x = 1 to Len(varString)
   if IsNumeric(Mid(varString, 1, 1)) = True Then FirstNumber =  Mid(varString, 1, 1)
   exit for
Next

Open in new window

If you're looking for more than a single digit number or potentially more, then we need to do a little more work.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Sasha42
ID: 37830126
Dim varstring As String
Dim firstnumber As Integer

varstring = "re: 3 xxxxx"
For x = 1 To Len(varstring)
   If IsNumeric(Mid(varstring, 1, i)) = True Then firstnumber = Mid(varstring, 1, i)
 
   Exit For
Next
  MsgBox (firstnumber)

The above returns a 0
0
 

Author Comment

by:Sasha42
ID: 37830133
Dim varstring As String
Dim firstnumber As Integer

varstring = "re: 3 xxxxx"
For x = 1 To Len(varstring)
   If IsNumeric(Mid(varstring, 1, 1)) = True Then firstnumber = Mid(varstring, 1,1)
 
   Exit For
Next
  MsgBox (firstnumber)

Correction: The above returns a 0
0
 
LVL 27

Expert Comment

by:tliotta
ID: 37830212
Do you want "first number" or "first digit"?

The above returns a 0

In both comments, you're using "For x =...", but you never use 'x' anywhere within the loop. In the first comment, you use 'Mid(varstring, 1, i)'. Try using 'Mid(varstring, x, 1))' instead.

Tom
0
 

Author Comment

by:Sasha42
ID: 37830317
I want the first number.  This still returns a zero.  Thanks for your help!

Dim varstring As String
Dim firstnumber As Integer

varstring = "re: 3 xxxxx"
For x = 1 To Len(varstring)
   If IsNumeric(Mid(varstring, x, 1)) = True Then firstnumber = Mid(varstring, x, 1)
 
   Exit For
Next
MsgBox (firstnumber)
0
 

Author Comment

by:Sasha42
ID: 37830322
I tried this too:

If IsNumeric(Mid(varstring, 1, x)) = True Then firstnumber = Mid(varstring, 1, x)
0
 
LVL 75
ID: 37830327
Can you give some additional examples of the strings ?
0
 

Author Comment

by:Sasha42
ID: 37830397
I am pulling data out of the subject line of an Outlook message:

FW: 1 xxxxxxx - Approved
RE:  3 xxxxxxx - Denied
1 xxxxxxx - Approved

I want to pull the first number, 1,3,1

Thanks!
0
 
LVL 75

Accepted Solution

by:
DatabaseMX (Joe Anderson - Microsoft MVP, Access and Data Platform) earned 2000 total points
ID: 37830441
Try this function ... works for all the cases you listed:


Public Function mGetFirstNumber(sStr As Variant) As Variant

''
''  FW: 1 xxxxxxx - Approved
''  RE:  3 xxxxxxx - Denied
''  1 xxxxxxx -Approved
''  abcdefghi9
    If IsNull(sStr) Then Exit Function
   
    If IsNumeric(Left(sStr, 1)) Then
        mGetFirstNumber = Left(sStr, 1)
        Exit Function
    End If
   
    Dim iCnt As Long
    For iCnt = 1 To Len(sStr)
        If IsNumeric(Mid(sStr, iCnt, 1)) Then
            mGetFirstNumber = Mid(sStr, iCnt, 1)
            Exit Function
        End If
    Next iCnt

End Function
0
 

Author Closing Comment

by:Sasha42
ID: 37830456
Perfect! Thanks!
0

Featured Post

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
Traditionally, the method to display pictures in Access forms and reports is to first download them from URLs to a folder, record the path in a table and then let the form or report pull the pictures from that folder. But why not let Windows retr…
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

876 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question