Как я могу убедиться, что Excel не меняет числовой формат метки данных в других языковых версиях? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть книга с кодом VBA, в которой указан формат чисел для меток данных на горизонтальной гистограмме.

Chart.SeriesCollection(1).DataLabels.NumberFormat = "0.0"

В моей копии Excel (O365) на английском языке вывод выглядит какожидается , например 3.7.Когда книга открывается в другой копии Excel (O365) на языке, отличном от английского, в Excel появляется вставка обратной косой черты, которую можно увидеть в поле «Код формата» поля «Форматировать метки данных» - sidebar (т.е. 0\.0).Где вывод должен быть, например, 3.7, вывод становится 0.4.

Проблема сохраняется, когда я загружаю книгу после того, как она была затронута неанглийским Excel - моя версияне выбрасывает обратную косую черту.Эта проблема исчезает, когда я удаляю обратную косую черту, и вывод снова соответствует ожидаемому.

Мне кажется, что Excel обрабатывает начальный ноль и десятичную точку как обычный текст, а второй ноль - как предполагаемый числовой символ.

Как я могу убедиться, что Excel поддерживает числовой формат, указанный в VBA, когда книга открыта в другой языковой версии?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Похоже, самое простое решение - программно отключить десятичные разделители и заменить их на свои , как описано здесь .

Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False

Я сталкивался с этим решением в этомнить при поиске способа определения языковой версии Excel.

Другое решение заключается в использовании десятичного разделителя, установленного системой при определении числового формата.Это решение, по-видимому, также дает желаемый результат (отображается один десятичный знак, даже если 0), хотя с любым десятичным разделителем, определенным системой:

Chart.SeriesCollection(1).DataLabels.NumberFormat = "0" & Application.International(xlDecimalSeparator) & "0"
0 голосов
/ 17 октября 2018

Прямого решения нет, но если оно сохраняется с NumberFormat, вы можете программно использовать комбинации встроенных функций Excel для получения одинаковых чисел.

для примера:

number = Round(number, 1)

В этом случае вы можете оставить NumberFormat как "General" или что-то подобное

...