Ввод текста на русском языке в Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

sergo_ukr
Сообщения: 12
Зарегистрирован: 26 сен 2007, 11:05
Откуда: Красноярский край г.Лесосибирск
Контактная информация:

Вот код, который вставляется в модуле в самом начале:

'процедура, устанавливающая русскую раскладку клавиатуры, если в
'данный момент включена английская раскладка
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 оффисе всё это работает "на ура", в других не пробовал.
sergo_ukr
Ответить