Вот код, который вставляется в модуле в самом начале:
'процедура, устанавливающая русскую раскладку клавиатуры, если в
'данный момент включена английская раскладка
Private Declare Function GetKeyboardLayoutName Lib "user32" _
Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" _
(ByVal HKL As Long, ByVal flags As Long) As Long
Sub ChangeKeyboardLayout()
Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName
'409 - английский,
'419 - русский
'переключение раскладки на русский, если в данный момент раскладка английская
If Val(CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1)))) = 409 Then
ActivateKeyboardLayout 0, 0
End If
End Sub
Далее в том месте программы, где нужен русский язык (в форме, в листе) вставляется
код (пример из моей программы, русский язык нужен при заполнении формы):
Private Sub UserForm_Activate()
' задание начальных установок формы
ChangeKeyboardLayout ' установка русской раскладки
... 'другие первоначальные установки
End Sub
В модуле данный текст по идее может быть вставлен в любом месте, но наверное его лучше
вставить сразу после первого куска кода, где эта функция создается (сам не пробовал, у меня
это используется при вводе данных в формах).
В 2003 оффисе всё это работает "на ура", в других не пробовал.
Ввод текста на русском языке в Excel
Модератор: Naeel Maqsudov