Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Find the first number in a string

Posted on 2012-04-10
Medium Priority
283 Views
If the string is "RE: 1 xxxxx" then what is the code that will returne the value 1? Thanks!
0
Question by:Sasha42
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 75

Expert Comment

ID: 37830025
You can use Val(YourString)

mx
0

LVL 75

Expert Comment

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

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
``````
If you're looking for more than a single digit number or potentially more, then we need to do a little more work.
0

Author Comment

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

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

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

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

ID: 37830322
I tried this too:

If IsNumeric(Mid(varstring, 1, x)) = True Then firstnumber = Mid(varstring, 1, x)
0

LVL 75

Expert Comment

ID: 37830327
Can you give some additional examples of the strings ?
0

Author Comment

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

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

ID: 37830456
Perfect! Thanks!
0

## Featured Post

Question has a verified solution.

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

AutoNumbers should increment automatically, without duplicates.  But sometimes something goes wrong, and the next AutoNumber value is a duplicate.  This article shows how to recover from this problem.
The Windows Phone Theme Colours is a tight, powerful, and well balanced palette. This tiny Access application makes it a snap to select and pick a value. And it doubles as an intro to implementing WithEvents, one of Access' hidden gems.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final pâ€¦
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filledâ€¦
###### Suggested Courses
Course of the Month11 days, 13 hours left to enroll