Добрый день! Пытаюсь форме передать посредством SendKeys значение переменной Slovo: [vba]
Код
Application.Sendkeys Slovo, true
[/vba] если раскладка русская, а в переменной Slovo что-то вроде: "ds@mail.ru" почему-то передаёт "ds@mail/ru" только при английской раскладке срабатывает норм. Как избежать эту зависимость от раскладки?
Добрый день! Пытаюсь форме передать посредством SendKeys значение переменной Slovo: [vba]
Код
Application.Sendkeys Slovo, true
[/vba] если раскладка русская, а в переменной Slovo что-то вроде: "ds@mail.ru" почему-то передаёт "ds@mail/ru" только при английской раскладке срабатывает норм. Как избежать эту зависимость от раскладки?Roman777
У меня срослось так. В параметрах "Переключения клавиатуры" определил комбинацию для включения английской раскладки - именно для ВКЛЮчения (а не ПЕРЕключения - переключение-то у меня по Ctrl+Shift как у многих). Виндоуз для ВКЛючения предложила Ctrl+0 - я согласился. Дальше - дело VBA-шной техники: [vba]
Код
Sub io() Dim Slovo As String
Slovo = "ds@mail.ru"
Application.SendKeys "^0", True 'Ctrl+0 определено для принудительного ВКЛЮЧЕНИЯ англ.раскладки (НЕ ДЛЯ ПЕРЕКЛЮЧЕНИЯ!!!) DoEvents
Application.SendKeys Slovo, True End Sub
[/vba]
У меня срослось так. В параметрах "Переключения клавиатуры" определил комбинацию для включения английской раскладки - именно для ВКЛЮчения (а не ПЕРЕключения - переключение-то у меня по Ctrl+Shift как у многих). Виндоуз для ВКЛючения предложила Ctrl+0 - я согласился. Дальше - дело VBA-шной техники: [vba]
Код
Sub io() Dim Slovo As String
Slovo = "ds@mail.ru"
Application.SendKeys "^0", True 'Ctrl+0 определено для принудительного ВКЛЮЧЕНИЯ англ.раскладки (НЕ ДЛЯ ПЕРЕКЛЮЧЕНИЯ!!!) DoEvents
Manyasha, В таком случае надо будет предусмотреть все возможные варианты, которые могли бы возникнуть и заменять "неправильно вставленные" символы.
Manyasha, В таком случае надо будет предусмотреть все возможные варианты, которые могли бы возникнуть и заменять "неправильно вставленные" символы.Roman777
А определить именно текущую раскладку в ВБА реально?
Наверняка! Но, как я понимаю, это через виндовую тоску типа c Declare Function и т.д. Тягомотина, короче! :)
Да и цель какая в этом знании? Можно же оформить принудительную включалку и для русской раскладки. И в любой момент задавать нужную раскладку, невзирая на то, какой она была до этого момента.
А определить именно текущую раскладку в ВБА реально?
Наверняка! Но, как я понимаю, это через виндовую тоску типа c Declare Function и т.д. Тягомотина, короче! :)
Да и цель какая в этом знании? Можно же оформить принудительную включалку и для русской раскладки. И в любой момент задавать нужную раскладку, невзирая на то, какой она была до этого момента.Gustav
Gustav, Вы правы, я больше для общего развития, тоже думал что через эти функции в виндовсовских библиотеках. ОлеггелО, Спасибо, так даже быстрее, без настроек на сочетание клавишь и ввода их через SendKey, хотя это практически тоже самое что и у Gustav. Единственное, [vba]
Код
Sub Perekl_russkiy() Call LoadKeyboardLayout("00000419", &H1) 'в случае если включен английский язык, включаю русский End Sub
[/vba] тут всё-таки само переключение идёт без проверки текущей раскладки, так что меня смутили комментарии: "в случае если включен английский язык, включаю русский"))).
Gustav, Вы правы, я больше для общего развития, тоже думал что через эти функции в виндовсовских библиотеках. ОлеггелО, Спасибо, так даже быстрее, без настроек на сочетание клавишь и ввода их через SendKey, хотя это практически тоже самое что и у Gustav. Единственное, [vba]
Код
Sub Perekl_russkiy() Call LoadKeyboardLayout("00000419", &H1) 'в случае если включен английский язык, включаю русский End Sub
[/vba] тут всё-таки само переключение идёт без проверки текущей раскладки, так что меня смутили комментарии: "в случае если включен английский язык, включаю русский"))).Roman777
По сути, при таком вводе (SendKeys), ведь, вдруг, пригодится вводить смешанные тексты... мне нужно каждый символ проверять на раскладку и включать необходимую раскладку программно...?
По сути, при таком вводе (SendKeys), ведь, вдруг, пригодится вводить смешанные тексты... мне нужно каждый символ проверять на раскладку и включать необходимую раскладку программно...?Roman777
ОлеггелО, спасибо! Вставил Ваш ответ в свой проект. У меня после ввода текста в некоторую ячейку включается сложный фильтр по списку продуктов, написанных в основном на русском. И всегда при входе в эту ячейку раздражал включенный английский. Теперь же - совершенно очаровательно получилось (свой костыль закомментил для истории): [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <> 1 Then Exit Sub
If Target.Address = Range("Имя_для_поиска").Address Then Call Perekl_russkiy 'Application.SendKeys "%+1", True 'Alt+Shift+1 определено для ВКЛЮЧЕНИЯ русской раскладки 'DoEvents End If End Sub
[/vba]
ОлеггелО, спасибо! Вставил Ваш ответ в свой проект. У меня после ввода текста в некоторую ячейку включается сложный фильтр по списку продуктов, написанных в основном на русском. И всегда при входе в эту ячейку раздражал включенный английский. Теперь же - совершенно очаровательно получилось (свой костыль закомментил для истории): [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <> 1 Then Exit Sub
If Target.Address = Range("Имя_для_поиска").Address Then Call Perekl_russkiy 'Application.SendKeys "%+1", True 'Alt+Shift+1 определено для ВКЛЮЧЕНИЯ русской раскладки 'DoEvents End If End Sub