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

Вход

Регистрация

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

 

= Мир MS Excel/Как обрабатывать нажатие клавиши на листе Excel - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как обрабатывать нажатие клавиши на листе Excel (VBA+Excel)
Как обрабатывать нажатие клавиши на листе Excel
SGerman Дата: Понедельник, 25.07.2016, 13:46 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Здравствуйте !

Требуется сделать так, чтобы при нажатии клавиши <Enter> следующая ячейка выбиралась так: сначала следующая за ней в этой же строке, если текущая ячейка в последнем столбце таблицы, то - первая в следующей строке, если текущая ячейка была последней в таблице, то - первая в вервой строке.
Вариант с "плавающим" TextBox не годится :(

Я нашел вот эту ссылку:

https://www.experts-exchange.com/questio....BA.html

но это очень сложно для меня.

Вот мой файл Excel

Спасибо за помощь и участие
К сообщению приложен файл: UsedRange.xls(32Kb)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеЗдравствуйте !

Требуется сделать так, чтобы при нажатии клавиши <Enter> следующая ячейка выбиралась так: сначала следующая за ней в этой же строке, если текущая ячейка в последнем столбце таблицы, то - первая в следующей строке, если текущая ячейка была последней в таблице, то - первая в вервой строке.
Вариант с "плавающим" TextBox не годится :(

Я нашел вот эту ссылку:

https://www.experts-exchange.com/questio....BA.html

но это очень сложно для меня.

Вот мой файл Excel

Спасибо за помощь и участие

Автор - SGerman
Дата добавления - 25.07.2016 в 13:46
Roman777 Дата: Понедельник, 25.07.2016, 14:29 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
SGerman, не знаю, то ли Вам нужно:
в модуле книги
[vba]
Код
Private Sub Workbook_Open()
   Application.OnKey "~", "Module1.M111"
End Sub
[/vba]
в модуле1
[vba]
Код
Sub M111()
Application.EnableEvents = False
r& = ActiveCell.Row
If ActiveCell.Column < 9 Then
   ActiveCell.Offset(, 1).Activate
Else
   If (r < 34) Then
       Cells(ActiveCell.Row + 1, 4).Activate
   Else
       Cells(13, 4).Activate
   End If
End If
Application.EnableEvents = True
End Sub
[/vba]
Правда, такая поправка станет действовать на все открытые книги. Пока не закроете эксель.
К сообщению приложен файл: 5997237.xls(45Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 25.07.2016, 14:31
 
Ответить
СообщениеSGerman, не знаю, то ли Вам нужно:
в модуле книги
[vba]
Код
Private Sub Workbook_Open()
   Application.OnKey "~", "Module1.M111"
End Sub
[/vba]
в модуле1
[vba]
Код
Sub M111()
Application.EnableEvents = False
r& = ActiveCell.Row
If ActiveCell.Column < 9 Then
   ActiveCell.Offset(, 1).Activate
Else
   If (r < 34) Then
       Cells(ActiveCell.Row + 1, 4).Activate
   Else
       Cells(13, 4).Activate
   End If
End If
Application.EnableEvents = True
End Sub
[/vba]
Правда, такая поправка станет действовать на все открытые книги. Пока не закроете эксель.

Автор - Roman777
Дата добавления - 25.07.2016 в 14:29
krosav4ig Дата: Понедельник, 25.07.2016, 16:21 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1338
Репутация: 533 ±
Замечаний: 0% ±

Excel 2007, 2013
в модуле книги
[vba]
Код
Private Sub Workbook_Activate()
    If ActiveSheet Is Sheets("Лист1") Then Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Workbook_Deactivate()
    Application.MoveAfterReturnDirection = xlDown
End Sub
[/vba]

в модуле листа
[vba]
Код
Private Sub Worksheet_Activate()
    Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Worksheet_Deactivate()
    Application.MoveAfterReturnDirection = xlDown
End Sub
[/vba]
К сообщению приложен файл: 3674905.xls(52Kb)


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Понедельник, 25.07.2016, 16:22
 
Ответить
Сообщениев модуле книги
[vba]
Код
Private Sub Workbook_Activate()
    If ActiveSheet Is Sheets("Лист1") Then Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Workbook_Deactivate()
    Application.MoveAfterReturnDirection = xlDown
End Sub
[/vba]

в модуле листа
[vba]
Код
Private Sub Worksheet_Activate()
    Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Worksheet_Deactivate()
    Application.MoveAfterReturnDirection = xlDown
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 25.07.2016 в 16:21
SGerman Дата: Понедельник, 25.07.2016, 16:22 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Roman777,
Как указать клавишу <Enter> ?

Вот так не работает

[vba]
Код
   Application.OnKey "{ENTER}", "ModTable.GoToNextCell"
[/vba]


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRoman777,
Как указать клавишу <Enter> ?

Вот так не работает

[vba]
Код
   Application.OnKey "{ENTER}", "ModTable.GoToNextCell"
[/vba]

Автор - SGerman
Дата добавления - 25.07.2016 в 16:22
SGerman Дата: Понедельник, 25.07.2016, 16:30 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
krosav4ig,

О Боже, как все просто когда ЗНАЕШЬ !
Никаких перехватов, "плавающих" текстбоксов и прочей лабуды !

Спасибо огромнейшее !


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
Сообщениеkrosav4ig,

О Боже, как все просто когда ЗНАЕШЬ !
Никаких перехватов, "плавающих" текстбоксов и прочей лабуды !

Спасибо огромнейшее !

Автор - SGerman
Дата добавления - 25.07.2016 в 16:30
Roman777 Дата: Понедельник, 25.07.2016, 16:31 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
SGerman, "{ENTER}" - это "ENTER" на клавиатуре "Num" (клавиатура с цифрами правее стрелочек, обычно). А так просто тильда "~".
Manual.
А так - то у krosav4ig, способ поинтереснее будет).


Много чего не знаю!!!!
 
Ответить
СообщениеSGerman, "{ENTER}" - это "ENTER" на клавиатуре "Num" (клавиатура с цифрами правее стрелочек, обычно). А так просто тильда "~".
Manual.
А так - то у krosav4ig, способ поинтереснее будет).

Автор - Roman777
Дата добавления - 25.07.2016 в 16:31
SGerman Дата: Понедельник, 25.07.2016, 16:41 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Roman777,

Ваше решение тоже отличное, спасибо !
Если б еще узнать где почитать о том, что под загадочным "~" понимется {Enter}, а заодно и все остальные клавиши, например {Ctrl+Del}, {Ctrl+Ins} и прочие :)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRoman777,

Ваше решение тоже отличное, спасибо !
Если б еще узнать где почитать о том, что под загадочным "~" понимется {Enter}, а заодно и все остальные клавиши, например {Ctrl+Del}, {Ctrl+Ins} и прочие :)

Автор - SGerman
Дата добавления - 25.07.2016 в 16:41
SGerman Дата: Понедельник, 25.07.2016, 16:48 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Roman777,

Добавил такую строчку и теперь обе клавиши "в теме"

[vba]
Код
   Application.OnKey "{ENTER}", "Module1.M111"
[/vba]

Теперь все как надо.

Но у krosav4ig, действительно, универсальнее, т.к. рабтает только на нужном листе


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRoman777,

Добавил такую строчку и теперь обе клавиши "в теме"

[vba]
Код
   Application.OnKey "{ENTER}", "Module1.M111"
[/vba]

Теперь все как надо.

Но у krosav4ig, действительно, универсальнее, т.к. рабтает только на нужном листе

Автор - SGerman
Дата добавления - 25.07.2016 в 16:48
Roman777 Дата: Понедельник, 25.07.2016, 16:51 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
в ссылке под названием "Manual" (сообщение №6) какраз-таких одно из самых популярным мест, где можно об этом почитать) в сообщении № 7


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 25.07.2016, 16:56
 
Ответить
Сообщениев ссылке под названием "Manual" (сообщение №6) какраз-таких одно из самых популярным мест, где можно об этом почитать) в сообщении № 7

Автор - Roman777
Дата добавления - 25.07.2016 в 16:51
SGerman Дата: Понедельник, 25.07.2016, 16:52 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Roman777,

Ваш Manual у меня не открывается

Цитата
Не удаётся завершить защищённую транзакцию


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRoman777,

Ваш Manual у меня не открывается

Цитата
Не удаётся завершить защищённую транзакцию

Автор - SGerman
Дата добавления - 25.07.2016 в 16:52
Roman777 Дата: Понедельник, 25.07.2016, 16:58 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
Не удаётся завершить защищённую транзакцию

Странно, но это обычная справка Майкрософт.


Много чего не знаю!!!!
 
Ответить
Сообщение
Не удаётся завершить защищённую транзакцию

Странно, но это обычная справка Майкрософт.

Автор - Roman777
Дата добавления - 25.07.2016 в 16:58
SGerman Дата: Понедельник, 25.07.2016, 16:58 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
В принципе я нашел тут
http://access-excel.tips/excel-vba-assign-hotkey-to-macro/
Но все равно спасибо еще раз


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеВ принципе я нашел тут
http://access-excel.tips/excel-vba-assign-hotkey-to-macro/
Но все равно спасибо еще раз

Автор - SGerman
Дата добавления - 25.07.2016 в 16:58
SGerman Дата: Понедельник, 25.07.2016, 17:00 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Roman777,
msdn у меня вообще не открывается, может потому что Украина :)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRoman777,
msdn у меня вообще не открывается, может потому что Украина :)

Автор - SGerman
Дата добавления - 25.07.2016 в 17:00
krosav4ig Дата: Понедельник, 25.07.2016, 23:47 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1338
Репутация: 533 ±
Замечаний: 0% ±

Excel 2007, 2013
msdn у меня вообще не открывается
а чего пишет? куда посылает?


(_)Õvõ(_)
 
Ответить
Сообщение
msdn у меня вообще не открывается
а чего пишет? куда посылает?

Автор - krosav4ig
Дата добавления - 25.07.2016 в 23:47
SGerman Дата: Среда, 27.07.2016, 00:07 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
а чего пишет? куда посылает?


См. сообщение № 10


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
Сообщение
а чего пишет? куда посылает?


См. сообщение № 10

Автор - SGerman
Дата добавления - 27.07.2016 в 00:07
SGerman Дата: Четверг, 28.07.2016, 20:18 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
msdn у меня вообще не открывается, может потому что Украина


Как и предполагалось, дело вовсе не в Украине, а в устаревшей версии Opera :)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
Сообщение
msdn у меня вообще не открывается, может потому что Украина


Как и предполагалось, дело вовсе не в Украине, а в устаревшей версии Opera :)

Автор - SGerman
Дата добавления - 28.07.2016 в 20:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как обрабатывать нажатие клавиши на листе Excel (VBA+Excel)
Страница 1 из 11
Поиск:

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