Изменить десятичный разделитель с помощью макроса в Excel?

Я хочу изменить десятичный разделитель с запятой на точку. Как я могу сделать это с помощью макроса?


person user3215646    schedule 21.01.2014    source источник
comment
Я не думаю, что вы можете сделать это с помощью макроса. Десятичный разделитель указывается в региональных настройках Windows. Вы можете, конечно, изменить все запятые на точки в вашем файле, но если вы не измените региональные настройки Windows, это просто сделает ваши значения недействительными как числа для Excel.   -  person ttaaoossuuuu    schedule 21.01.2014
comment
Ты меня расстроил братан :(   -  person user3215646    schedule 21.01.2014


Ответы (3)


На самом деле вы можете это сделать.

Sub Macro1()
    With Application
        .DecimalSeparator = "."
        .ThousandsSeparator = ","
        .UseSystemSeparators = false
    End With
End Sub

Важное примечание:

Это изменение вступит в силу только внутри Excel и для ВСЕХ открытых файлов Excell. И при следующем открытии Excel эти настройки будут активны.

Вы можете записать состояние этих настроек перед их изменением, чтобы можно было вернуть приложение в исходное состояние.

person CaBieberach    schedule 07.05.2014
comment
отличается ли это от изменения дополнительных настроек для вашего листа Excel? Я хочу, чтобы макрос запускался в таблицах Excel, встроенных в слово, и не вносил изменений во все другие файлы Excel. - person EmRoBeau; 27.06.2018

Вы не можете.

Десятичный разделитель является частью региональных настроек вашей операционной системы.

Его нельзя изменить на уровне приложения (Excel) или на уровне файла (книги Excel).

Если у вас есть проблемы с десятичным разделителем в файле, который вы хотите использовать в Excel, отредактируйте свой вопрос, указав реальную проблему.

Ваша система может использовать расширение . в виде десятичного числа, но файл, который вы хотите импортировать, использует запятую. Откройте файл в текстовом редакторе и замените запятые на точки, а точки на запятые.

  • например: замените все запятые на # (или другой символ, который вряд ли появится где-либо в файле)
  • затем замените все точки запятыми
  • затем замените все # точками.

Сохраните файл, а затем импортируйте в Excel.

person teylyn    schedule 21.01.2014
comment
Откуда ты знаешь? У меня проблема с массивами VBA. У меня есть разделитель comma, хотя ? Application.DecimalSeparator возвращает dot. Вы говорите об этом? - person Przemyslaw Remin; 02.11.2017
comment
@PrzemyslawRemin да. Ваш системный разделитель для десятичного числа в вашей системе - точка. Разделитель списка и десятичный разделитель — разные вещи. В системе с точкой в ​​качестве десятичного числа разделителем списка (который используется в массивах) обычно является запятая. В системах, где десятичным разделителем является запятая, разделителем списка обычно является точка с запятой. - person teylyn; 02.11.2017
comment
Спасибо. Есть ли какой-нибудь элегантный простой способ узнать, что такое разделитель списка пользователей? Я делаю это извилистым способом: stackoverflow.com/a/47079612/1903793 - person Przemyslaw Remin; 03.11.2017
comment
Спасибо, сработало изменение десятичного разделителя в региональных настройках в Windows вместо параметров Excel. - person Andrés Fernández; 27.08.2018

Перейдите в «Параметры», и в разделе «Дополнительно» вы найдете параметр «Использовать системный разделитель». Отмените выбор и введите свои собственные символы.

person WolfsBane    schedule 16.04.2014