Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/при передаче SendKeys влияет раскладка. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » при передаче SendKeys влияет раскладка. (Макросы/Sub)
при передаче SendKeys влияет раскладка.
Roman777 Дата: Пятница, 16.10.2015, 10:01 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Пытаюсь форме передать посредством 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
Дата добавления - 16.10.2015 в 10:01
Manyasha Дата: Пятница, 16.10.2015, 12:54 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Roman777, как вариант, передать Replace(Slovo, "/", ".") :D


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеRoman777, как вариант, передать Replace(Slovo, "/", ".") :D

Автор - Manyasha
Дата добавления - 16.10.2015 в 12:54
Gustav Дата: Пятница, 16.10.2015, 13:56 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
У меня срослось так. В параметрах "Переключения клавиатуры" определил комбинацию для включения английской раскладки - именно для ВКЛЮчения (а не ПЕРЕключения - переключение-то у меня по 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]
К сообщению приложен файл: 9636728.png (38.1 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 16.10.2015, 14:03
 
Ответить
СообщениеУ меня срослось так. В параметрах "Переключения клавиатуры" определил комбинацию для включения английской раскладки - именно для ВКЛЮчения (а не ПЕРЕключения - переключение-то у меня по 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]

Автор - Gustav
Дата добавления - 16.10.2015 в 13:56
Roman777 Дата: Пятница, 16.10.2015, 14:13 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Gustav, Спасибо большое. Отличный вариант...) А определить именно текущую раскладку в ВБА реально?


Много чего не знаю!!!!
 
Ответить
СообщениеGustav, Спасибо большое. Отличный вариант...) А определить именно текущую раскладку в ВБА реально?

Автор - Roman777
Дата добавления - 16.10.2015 в 14:13
Roman777 Дата: Пятница, 16.10.2015, 14:14 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, В таком случае надо будет предусмотреть все возможные варианты, которые могли бы возникнуть и заменять "неправильно вставленные" символы.


Много чего не знаю!!!!
 
Ответить
СообщениеManyasha, В таком случае надо будет предусмотреть все возможные варианты, которые могли бы возникнуть и заменять "неправильно вставленные" символы.

Автор - Roman777
Дата добавления - 16.10.2015 в 14:14
Gustav Дата: Пятница, 16.10.2015, 15:16 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
А определить именно текущую раскладку в ВБА реально?

Наверняка! Но, как я понимаю, это через виндовую тоску типа c Declare Function и т.д. Тягомотина, короче! :)

Да и цель какая в этом знании? Можно же оформить принудительную включалку и для русской раскладки. И в любой момент задавать нужную раскладку, невзирая на то, какой она была до этого момента.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
А определить именно текущую раскладку в ВБА реально?

Наверняка! Но, как я понимаю, это через виндовую тоску типа c Declare Function и т.д. Тягомотина, короче! :)

Да и цель какая в этом знании? Можно же оформить принудительную включалку и для русской раскладки. И в любой момент задавать нужную раскладку, невзирая на то, какой она была до этого момента.

Автор - Gustav
Дата добавления - 16.10.2015 в 15:16
ОлеггелО Дата: Пятница, 16.10.2015, 16:04 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

Roman777, посмотрите ещё вариант - не мой. Просто где-то его нашёл, мне кажется очень удобным.
К сообщению приложен файл: _11.xlsm (17.9 Kb)
 
Ответить
СообщениеRoman777, посмотрите ещё вариант - не мой. Просто где-то его нашёл, мне кажется очень удобным.

Автор - ОлеггелО
Дата добавления - 16.10.2015 в 16:04
Roman777 Дата: Пятница, 16.10.2015, 16:51 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
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
Дата добавления - 16.10.2015 в 16:51
Roman777 Дата: Пятница, 16.10.2015, 16:54 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
По сути, при таком вводе (SendKeys), ведь, вдруг, пригодится вводить смешанные тексты... мне нужно каждый символ проверять на раскладку и включать необходимую раскладку программно...?


Много чего не знаю!!!!
 
Ответить
СообщениеПо сути, при таком вводе (SendKeys), ведь, вдруг, пригодится вводить смешанные тексты... мне нужно каждый символ проверять на раскладку и включать необходимую раскладку программно...?

Автор - Roman777
Дата добавления - 16.10.2015 в 16:54
Gustav Дата: Пятница, 16.10.2015, 18:12 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
ОлеггелО, спасибо! Вставил Ваш ответ в свой проект. У меня после ввода текста в некоторую ячейку включается сложный фильтр по списку продуктов, написанных в основном на русском. И всегда при входе в эту ячейку раздражал включенный английский. Теперь же - совершенно очаровательно получилось (свой костыль закомментил для истории):
[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]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеОлеггелО, спасибо! Вставил Ваш ответ в свой проект. У меня после ввода текста в некоторую ячейку включается сложный фильтр по списку продуктов, написанных в основном на русском. И всегда при входе в эту ячейку раздражал включенный английский. Теперь же - совершенно очаровательно получилось (свой костыль закомментил для истории):
[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]

Автор - Gustav
Дата добавления - 16.10.2015 в 18:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » при передаче SendKeys влияет раскладка. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!