2015-11-17 6 views
1

Я работаю с Vba-excel, чтобы импортировать файл csv в excel. Я застрял с форматированием в VBA. если мой регион установлен по умолчанию в США, он работает правильно. Однако, если какие-либо регионы используют запятую для десятичной дроби, она работает некорректно.Формат точки или запятой зависит от местоположения

fuction formatPercentValue (value as string) as string //value = 1 
    formatPercentValue = formatPercent(Round(CDbl(Val(value)), 5), 6) 
    // US: 100.000000%, HU (Hungary): 100,000000% 

, когда я звоню, что

r as range 
r.value = formatPercentValue (value) 
// US: r.value = 1, HU: r.value = 1000000 

Я не знаю, как исправить это, потому что, когда он появляется в первенствует US: 100% HU: 100000000%. Я не знаю, почему, когда r.value может установить 1 в США, но это не в HU.

ответ

0

Вы должны использовать Application.International, чтобы проверить настройки и применить другое форматирование:

If Application.International(xlCountrySetting) <> 1 Then 

If Application.International(xlDecimalSeparator) <> "." Then 

https://support.microsoft.com/en-us/kb/213833

+0

Привет. После проверки 'decimalSeparator', как мы можем узнать, как установить return' r.value'? Я действительно не знаю, чтобы получить правильный номер при установке 'r.value' –

+0

Не могли бы вы предоставить свой код: formatВернуться, как эта часть вашего процесса, сообщите мне, когда вы это сделаете, я посмотрю, что я могу делать! ;) – R3uK

+0

Вы знаете, почему метод 'r.value' получает различное значение в' dot' и 'comma' seperator? Мой почтовый код является основным кодом. Я пытаюсь отлаживать, и у меня есть разные значения, которые я отмечаю '//' –

Смежные вопросы