Excel vba как изменить язык

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

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

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

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

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

Declare PtrSafe Function ActivateKeyboardLayout Lib «user32» (ByVal HKL As LongPtr, ByVal flags As LongPtr) As LongPtr

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

Sub ToEngOrRus()

Call ActivateKeyboardLayout(0, 0)

End Sub

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

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

Declare PtrSafe Function LoadKeyboardLayout Lib «user32» Alias «LoadKeyboardLayoutA» (ByVal pwszKLID As String, ByVal flags As LongPtr) As LongPtr

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

‘Переключение на английскую раскладку

Sub ToEng()

Call LoadKeyboardLayout(«00000409», &H1)

End Sub

‘Переключение на русскую раскладку

Sub ToRus()

Call LoadKeyboardLayout(«00000419», &H1)

End Sub

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

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

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

Declare PtrSafe Function GetKeyboardLayoutName Lib «user32» Alias «GetKeyboardLayoutNameA» (ByVal pwszKLID As String) As LongPtr

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

Sub KeyboardLayoutName()

Dim klName As String * 8

GetKeyboardLayoutName klName

    If klName = «00000409» Then

        MsgBox «Текущая раскладка — Английская!»

    ElseIf klName = «00000419» Then

        MsgBox «Текущая раскладка — Русская!»

    Else

        MsgBox «Текущая раскладка — не Русская и не Английская!»

    End If

End Sub

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

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

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

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

Declare PtrSafe Function LoadKeyboardLayout Lib «user32» Alias «LoadKeyboardLayoutA» (ByVal pwszKLID As String, ByVal flags As LongPtr) As LongPtr

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Select Case Target.Column

        Case 5, 7

            Call Module3.LoadKeyboardLayout(«00000409», &H1)

        Case Else:

            Call Module3.LoadKeyboardLayout(«00000419», &H1)

    End Select

End Sub

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

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


1 / 1 / 0

Регистрация: 07.11.2013

Сообщений: 4

1

03.08.2016, 13:49. Показов 27598. Ответов 9


Здравствуйте, подскажите, где меняется язык интерфейса VBA? Вместо английского меню отображаются иероглифы

Миниатюры

Поменять язык интерфейса VBA
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



190 / 59 / 20

Регистрация: 16.07.2013

Сообщений: 234

03.08.2016, 13:56

2

В самом экселе попробуйте посмотреть

Миниатюры

Поменять язык интерфейса VBA
 



0



1 / 1 / 0

Регистрация: 07.11.2013

Сообщений: 4

03.08.2016, 14:18

 [ТС]

3

спасибо, языки указаны верно. проблема появилась после установки VBA для автокада, в актокаде меню отображается нормально, в word и excel -иероглифы

Миниатюры

Поменять язык интерфейса VBA
 



1



2 / 2 / 0

Регистрация: 25.05.2016

Сообщений: 1

14.11.2016, 12:44

4

Меняем язык, перезапускаем Excel..

Миниатюры

Поменять язык интерфейса VBA
 



2



1 / 1 / 0

Регистрация: 26.03.2017

Сообщений: 1

26.03.2017, 17:42

5

Большое спасибо!!! Помогло!



1



0 / 0 / 0

Регистрация: 16.03.2020

Сообщений: 1

06.11.2020, 22:08

6

Большое спасибо



0



0 / 0 / 0

Регистрация: 26.05.2016

Сообщений: 14

16.02.2021, 11:52

7

А руссифицировать можно как нибудь?



0



0 / 0 / 0

Регистрация: 18.06.2021

Сообщений: 1

21.06.2021, 09:58

8

К сожалению не помогло. Может не хватает шрифтов?



0



ᴁ®

Эксперт MS Access

2917 / 1623 / 340

Регистрация: 13.12.2016

Сообщений: 5,490

Записей в блоге: 3

21.06.2021, 11:31

9

Цитата
Сообщение от Igel800
Посмотреть сообщение

К сожалению не помогло. Может не хватает шрифтов?

Тема 16 года. Если у вас проблема, создайте новую тему с описанием. (тоже автокад устанавливали?)
Но для начала откатите шрифты



0



0 / 0 / 0

Регистрация: 08.09.2022

Сообщений: 1

08.09.2022, 12:06

10

Мне помогло!
Смена «Языки разработки и проверка..» на английский переключил — вместо иероглифов в VBA стал норм английский.

Миниатюры

Поменять язык интерфейса VBA
 



0



Ex2016″Разработчик»-«Visual Basic»всё на китайском

Юрий_Нд

Дата: Среда, 28.08.2019, 13:28 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Доброго дня всем.
Установил недавно Excel 2016. Зашёл сегодня в режим «Разработчик» — «Visual Basic» … А там всё на китайском.
Спасибо ________________ Юрий.

 

Ответить

китин

Дата: Среда, 28.08.2019, 13:34 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6944


Репутация:

1059

±

Замечаний:
0% ±


Excel 2007;2010;2016

вот это поперло!!!!! везунчик просто :D
в региональных настрйках смотрели?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Юрий_Нд

Дата: Среда, 28.08.2019, 15:35 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013


«… не-ееее …, уж лучше Вы к нам»
Если не ошибаюсь, чистейший диалект провинции Тюнь Хуань …

Сообщение отредактировал Юрий_НдСреда, 28.08.2019, 15:36

 

Ответить

bmv98rus

Дата: Четверг, 29.08.2019, 19:28 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3978


Репутация:

749

±

Замечаний:
0% ±


Excel 2013/2016

в региональных настрйках смотрели?

писалось про систему и смотрите там про Non Unicode program.


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Юрий_Нд

Дата: Четверг, 29.08.2019, 19:45 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

писалось про систему и смотрите там про Non Unicode program.

… или опять «не то»?

 

Ответить

_Boroda_

Дата: Четверг, 29.08.2019, 19:52 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16561


Репутация:

6446

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


На вкладке Дополнительно, кнопка Изменить язык системы


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Юрий_Нд

Дата: Четверг, 29.08.2019, 20:02 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

На вкладке Дополнительно, кнопка Изменить язык системы

… а дальше7

 

Ответить

bmv98rus

Дата: Четверг, 29.08.2019, 21:52 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3978


Репутация:

749

±

Замечаний:
0% ±


Excel 2013/2016

попробуйте переключить туда сюда , и нужна перезагрузка. Под другим аккаунтом на тойже машине попробуйте, после чего произошло? Можно откатится на точку восстановления.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rusЧетверг, 29.08.2019, 21:54

 

Ответить

Юрий_Нд

Дата: Четверг, 29.08.2019, 22:47 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

после чего произошло? Можно откатится на точку восстановления.

Дело в том, что это не произошло, а просто было.
После полной переустановки системы, перехода на другой Windows и Office.
Раньше я работал на 32 разрядной Windows 7 домашняя.
Перешёл на 64 разрядную Windows 7 профессиональная sp1.
Раньше был 2013 Office, сейчас 2016 Office.
Кстати, на другой машине, ноутбуке, жёсткий диск вылетел почти синхронно, тоже сейчас «стоит» Windows 7 sp1, но максимальный.
А офис тот же. И проблемы «один в один».
Так что, я думаю, что тут проблемы всё-таки не был в Системе, а в самом Офисе.

Сообщение отредактировал Юрий_НдЧетверг, 29.08.2019, 22:48

 

Ответить

bmv98rus

Дата: Пятница, 30.08.2019, 07:47 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3978


Репутация:

749

±

Замечаний:
0% ±


Excel 2013/2016

Перешёл на 64 разрядную Windows 7 профессиональная sp1

Своевременно :-) Поддержка в январе заканчивается. Переводите на Win10, Но это скорее всего не вылечит раз проблемы аналогичные, а значит берите другой дистрибутив офиса.


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Excel vba если ошибка
  • Excel vba runtime error 424
  • Excel vba on error goto error
  • Excel vba if value error
  • Excel vba error 2029