Stuart McLachlan
stuart at lexacorp.com.pg
Tue Apr 12 07:18:43 CDT 2005
On 12 Apr 2005 at 22:03, Stuart McLachlan wrote:
> That said, this one does work with multi digit numbers:
...
> While IsNumeric(Mid$(InputString, lngLoopcount, 1))
I just tried this against Pedro's original examples and it broke on
"2(2v+2a)". It returned 8 instead of 6.
The problem is that Val("+2a)") evaluates to 2, but IsNumeric("+") is
false. So it adds 2 when it gets to the "+" and again when it gets to the
"2"
This version handles "+2" and "-2" etc in the string as well:
Function Addnumbers(InputString As String) As Double
Dim lngStore As Double
Dim lngLoopcount As Double
lngLoopcount = 0
Do
lngLoopcount = lngLoopcount + 1
lngStore = lngStore + Val(Mid$(InputString, lngLoopcount))
'move past current number
While InStr("123456789+-", Mid$(InputString, lngLoopcount, 1)) > 0
lngLoopcount = lngLoopcount + 1
Wend
Loop Until lngLoopcount >= Len(InputString)
Addnumbers = lngStore
End Function
--
Stuart