mail mail

Автоматическое переключение раскладки клавиатуры для разных диапазонов ячеек

Данный макрос автоматизирует процесс переключения раскладки клавиатуры (смену языков ввода) при работе с таблицами в Excel.

К примеру, вы заносите данные в таблицу, где в некоторые столбцы требуется вводить русские слова (фамилия, имя, и т.п.), а в другие столбцы - английские (марка и модель авто, и т.д.)

Чтобы каждый раз не переключать раскладку вручную - можно воспользоваться WinAPI функцией ActivateKeyboardLayout

Вставьте этот код в модуль листа:

Private Declare Function ActivateKeyboardLayout _
                          Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Const kb_lay_ru As Long = 68748313, kb_lay_en As Long = 67699721

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Column    ' в зависимости от номера столбца активной ячеки
       Case 1 To 3, 6    ' для столбцов Имя, Фамилия, Номер машины, Цвет
           ВключитьРусскуюРаскладку
        Case 4, 5:    ' для столбцов Марка авто, Модель
           ВключитьАнглийскуюРаскладку
        Case Else:    ' ничего не делаем (оставляем текущую раскладку)
   End Select
End Sub

Sub ВключитьРусскуюРаскладку()
    ' Переключить на русский язык
   x = ActivateKeyboardLayout&(kb_lay_ru, 0)
End Sub

Sub ВключитьАнглийскуюРаскладку()
    ' Переключить на английский язык
   x = ActivateKeyboardLayout&(kb_lay_en, 0)
End Sub

ВложениеРазмер
KeyboardLayout.xls23.5 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Чтобы переключение раскладки клавиатуры работало для определённых диапазонов ячеек,
замените макрос Worksheet_SelectionChange следующим кодом:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case False
        Case Intersect(Target, [a2:b4]) Is Nothing
            ВключитьРусскуюРаскладку ' при выделении ячейки в диапазоне a2:b4
           
        Case Intersect(Target, [e:h]) Is Nothing
            ВключитьАнглийскуюРаскладку ' при выделении ячейки в столбцах с E по H
           
        Case Intersect(Target, [k6:k65000]) Is Nothing
            ВключитьРусскуюРаскладку ' при выделении ячейки в диапазоне k6:k65000
           
        Case Else:    ВключитьАнглийскуюРаскладку ' для остальных ячеек
   End Select
End Sub

А как исправить этот макрос для определенного массива?

Номера раскладок клавиатуры для разных языков:

68748313 - Русская раскладка
67699721 - Английская (США) раскладка
68944924 - Албанская раскладка
67701769 - Английская (Австралия) раскладка
134809609 - Английская (Великобритания) раскладка
403249161 - Английская (Ирландия) раскладка
269029385 - Английская (Канада) раскладка
604578825 - Английская (Карибский) раскладка
67703817 - Английская (Новая Зеландия) раскладка
67705865 - Английская (Южная Африка) раскладка
537468937 - Английская (Ямайка) раскладка
67699766 - Африканская раскладка
70059053 - Бакская раскладка
69403683 - Белорусская раскладка
67240962 - Болгарская раскладка
68027406 - Венгерская раскладка
135464979 - Голландская (Бельгия) раскладка
68355091 - Голландская (стандартная) раскладка
67634184 - Греческая раскладка
67503110 - Датская раскладка
67699745 - Индонезийская раскладка
68092943 - Исландская раскладка
738864138 - Испанская (Аргентина) раскладка
1074413578 - Испанская (Боливия) раскладка
537534474 - Испанская (Венесуэла) раскладка
269094922 - Испанская (Гватемала) раскладка
1208633354 - Испанская (Гондурас) раскладка
470424586 - Испанская (Доминиканская республика) раскладка
604644362 - Испанская (Колумбия) раскладка
336204810 - Испанская (Коста-Рика) раскладка
134875146 - Испанская (Мексиканская) раскладка
1275743242 - Испанская (Никарагуа) раскладка
403314698 - Испанская (Панама) раскладка
1007303690 - Испанская (Парагвай) раскладка
671754250 - Испанская (Перу) раскладка
1342853130 - Испанская (Пуэрто-Рико) раскладка
1141523466 - Испанская (Сальвадор) раскладка
201985034 - Испанская (современная сортировка) раскладка
67765258 - Испанская (традиционная) раскладка
940193802 - Испанская (Уругвай) раскладка
873083914 - Испанская (Чили) раскладка
805974026 - Испанская (Эквадор) раскладка
68158480 - Итальянская (стандартная) раскладка
68159504 - Итальянская (Швейцария) раскладка
67306499 - Каталанский раскладка
69600294 - Латышский раскладка
69665831 - Литовский раскладка
70190127 - Македонский (FYROM) раскладка
67570695 - Немецкая (Австрия) раскладка
67572743 - Немецкая (Линхтейштейн) раскладка
67571719 - Немецкая (Люксембург) раскладка
67568647 - Немецкая (стандартная) раскладка
134678535 - Немецкая (Швейцария) раскладка
68420628 - Норвежская (букмол) раскладка
135530516 - Норвежская (нюнорск) раскладка
68486165 - Польская раскладка
68551702 - Португальская (Бразилия) раскладка
135661590 - Португальская (стандартная) раскладка
68682776 - Румынская раскладка
203033626 - Сербская раскладка
68879387 - Словацкая раскладка
69469220 - Словенская раскладка
69141535 - Турецкая раскладка
69338146 - Украинская раскладка
70779960 - Фарерских островов раскладка
67830795 - Финская раскладка
135006220 - Французская (Бельгия) раскладка
202116108 - Французская (Канада) раскладка
67900428 - Французская (Люксембург) раскладка
67896332 - Французская (стандартная) раскладка
269225996 - Французская (Швейцария) раскладка
68813850 - Хорватская раскладка
67437573 - Чешская раскладка
69010461 - Шведская раскладка
69534757 - Эстонская раскладка

Интересует переключение раскладок для других языков. Где можно посмотреть номера раскладок клавиатур для других языков?

а как тоже самое замутить с capslock'ом

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
2 + 5 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.