VBA Excel. Смена раскладки клавиатуры

    Смена раскладки клавиатуры в VBA Excel с РУС на ENG и наоборот с помощью функций Windows API. Автоматическое изменение раскладки в пределах одной таблицы.

    Смена раскладки клавиатуры

    Поочередная смена раскладки

    Для организации поочередной смены раскладки клавиатуры с РУС на ENG и наоборот, имитирующей нажатие сочетания клавиш (Win + Space, Alt + Shift, Ctrl + Shift — в зависимости от ваших настроек), можно использовать функцию Windows API ActivateKeyboardLayout, объявленную в разделе Declarations стандартного модуля:

    Код VBA Excel для поочередного изменения раскладки клавиатуры:

    Заданная смена раскладки

    Для смены раскладки клавиатуры из кода VBA Excel с указанием устанавливаемого языка используется функция Windows API LoadKeyboardLayout, объявленная в разделе Declarations стандартного модуля:

    Код VBA Excel для изменения раскладки клавиатуры с указанием устанавливаемого языка:

    "00000409" — код английской раскладки;
    "00000419" — код русской раскладки.

    Определение текущей раскладки

    Получить значение текущей раскладки можно с помощью функции Windows API GetKeyboardLayoutName, объявленной в разделе Declarations стандартного модуля:

    Код определения текущей раскладки для вариантов РУС и ENG:

    Переменная klName объявлена как строка фиксированной длины. Запуск процедуры с обычной переменной может вызывать ошибку, закрывающую приложение. Так происходит в моей версии Excel 2016.

    Смена раскладки в таблице

    Автоматическое изменение раскладки в пределах одной таблицы при переходе между ячейками.

    Для автоматической смены раскладки при переходе между ячейками разных диапазонов одного рабочего листа будем использовать функцию Windows API LoadKeyboardLayout, объявленную в разделе Declarations стандартного модуля:

    Допустим, что в 5 и 7 столбцах нашей таблицы находятся данные на английском языке или, попросту, требующие ввод латиницей. Чтобы не переключать каждый раз раскладку клавиатуры вручную, разместим в модуле нужного листа следующий код VBA Excel:

    Теперь при переходе к ячейкам 5 и 7 столбцов раскладка клавиатуры автоматически меняется на ENG, а при уходе с них — на РУС.

    Module3 — это стандартный модуль, в котором размещена функция Windows API LoadKeyboardLayout.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.