VBA для Excel 2010/2013 - Как определить языковой стандарт системы

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

Это связано с тем, что макросы Excel, похоже, работают с языками или, по крайней мере, с ивритом (по какой-то причине, даже если у вас установлена ​​клавиатура на иврите, и она выводит иврит почти во всех приложениях, это не относится к редактору макросов Excel). до тех пор, пока вы не установите в качестве локального значения системы иврит, и поэтому в электронной таблице не будет отображаться иврит, даже если вы ввели его непосредственно в ячейку, он будет отображаться нормально - по крайней мере, это верно для Excel 2010 и 2013).

В любом случае, я пробовал несколько строк, которые не работали, и они:

Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Application.LanguageSettings.LanguageID(msoLanguageIDInstall)
Application.LanguageSettings.LanguagePreferredForEditing(msoLanguageIDHebrew)

Они не работали при определении языкового стандарта системы и выводили одно и то же значение, будь то английский (США) или иврит (Израиль).

Может кто-нибудь сказать мне, что мне нужно сделать, чтобы указать числом или текстом, какой язык системы?

2 ответа

Я нашел это здесь:

Ваша первая строка кода Application.LanguageSettings.LanguageID(msoLanguageIDUI) дает LCID, который будет 1033 для английского (США) или 1037 для иврита.

Вы могли бы сделать простой IF заявление с использованием Application.LanguageSettings.LanguageID(msoLanguageIDUI)изменить язык, используя эти цифры.

Sub LangCheck()

   Dim lang_code As Long
        lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)

        MsgBox lang_code

End Sub

США 1033, иврит 1037, по этой ссылке:

MSDN

Другие вопросы по тегам