Добавить список проверки в ячейку (проблема с локализацией) - PullRequest
0 голосов
/ 03 июня 2019

Я добавляю список проверки в определенную ячейку, чтобы пользователь мог выбрать из выпадающего списка.

Каждый элемент отделен ,. Это отлично работает. Однако, если используется немецкая версия excel, иногда , является разделителем, а иногда ;. Я не могу понять, какой из них использовать.

Я хочу добавить список проверки в ячейку. Я делаю это, добавляя проверку с типом xlValidateList и формулой, такой как "eggs,milk,apples".

В результате пользователь может выбрать из выпадающего меню, которое выглядит следующим образом:

eggs
milk
apples

Тем не менее, иногда в немецкой версии excel этот список содержит всего один элемент и гласит:

eggs,milk,apples

Я уже пытался проверить, какой язык Excel установлен и установлен ли он на немецкий, заменив "," на ";". Это работает, но только иногда. В другое время (после перезапуска Excel) , ожидается снова.

Мой код для настройки списка:

ws.Cells(16, column) = vbNullString
ws.Cells(16, column).Validation.Delete
ws.Cells(16, column).Validation.Add Type:=xlValidateList, Formula1:=convertToLocale(portListAsString)
ws.Cells(16, column).Select

Функция convertToLocale в основном проверяет, равняется ли Application.LanguageSettings.LanguageID(msoLanguageIDUI) 1031, и заменяет , на ; соответственно. Иногда результат такой, как ожидалось, иногда это: eggs;milk;apples

Спасибо

1 Ответ

0 голосов
/ 03 июня 2019

Будет ли это работать для вас:

Sub Test()

Dim MyArray As Variant
MyArray = Array("eggs", "milk", "apples")

With ws.Cells(16, column).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(MyArray, ",")
End With

End Sub

Моя голландская система использует точку с запятой, но никогда не возникало проблем, мне приходилось заменять универсальную запятую в VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...