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, по этой ссылке: