Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

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 по тематическим разделам со ссылками на все статьи.