View Single Post
  #9   Report Post  
Posted to microsoft.public.excel.programming
Per Jessen Per Jessen is offline
external usenet poster
 
Posts: 1,533
Default String to Number Conversion Problem

Because Substitiute is in this case only used to remove Thousands-Separator,
so without Val the result will be 10025000



"Rainer Bielefeld" skrev i meddelelsen
...
why use Val then?

"Per Jessen" schrieb im Newsbeitrag
...
Rainer,

Then we substiture Thousands-Separator with nothing and use Val (will
also work if no Thousands-Separator is found):

vDouble = CDbl(Val(WorksheetFunction.Substitute("10,025.000" , ",", "",
1)))

Regards,
Per

"Rainer Bielefeld" skrev i meddelelsen
...
Per,

it's not a good idea to use Val, if Thousands-Separator is used as well.

eg. cdbl(val("10,025.000")) will not bring the correct result ;-)

Regards,

Rainer


"Per Jessen" schrieb im Newsbeitrag
...
Rainer,

I guess you are right, so I found that you have to convert your text
string into a true value, then as excel always use '.' as decimal
delemiter, this single line is what you need:

vDouble = CDbl(Val("25.000"))

Best regards,
Per

"Rainer Bielefeld" skrev i meddelelsen
...
Hi Per,

thanks for your help.

You can use a simple substitute function:

a = WorksheetFunction.Substitute("25.000", ".", ",", 1)
vDouble = CDbl(a)

sure - but this is somehow stupid, isn't it?
And I don't like it - I think, it's not good practice.

Regards,

Rainer



I'm running a german Office, which means Decimal-Seperator is ","
and Thousands-Seperator is "."
and I want to convert Strings which are using "." and "," as
Decimal- and Thousands-Separator to Numbers.

For example I want to convert "25.000" to 25.

I've tried

Application.UseSystemSeparators = False
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
vDouble = CDbl("25.000")
Application.DecimalSeparator = ","
Application.ThousandsSeparator = "."
Application.UseSystemSeparators = True

but the result is 25000?

Can anyone help?

Regards,

Rainer