Excel 2002 XP и клавиша "Enter"

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Pafnutij_ru
Сообщения: 6
Зарегистрирован: 28 май 2005, 12:07

Как сделать в версии ХР переход с ячейки, содержащей гиперссылку, по нажатию Enter'a, а не только левой кнопкой мыши?По 2000-ую версию включительно, всё работало так по умолчанию, а в ХР курсор просто перемещается на соседнюю ячейку.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Посмотрите в меню
Сервис/Параметры/Правка - там всегда указывалось в том числе, что делать по Enter
Сервис/Параметры/Переход (в XP может называться по другому) - в 2000-ном там можно было переопределить поведение клавиш и сделать аналогичным Lotus-у. Скорее всего в XP сюда добавили совместимость пользовательского интерфейса с предыдущии версиями. (У меня к сожалению нет XP под рукой...)
Pafnutij_ru
Сообщения: 6
Зарегистрирован: 28 май 2005, 12:07

Если бы всё было так просто.... С помощью вкладок Сервис/Параметры это , к сожалению не регулируется....
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Завтра посмотрю в Excel2003.
Может там можно будет нажатие клавиши обработать...
Pafnutij_ru
Сообщения: 6
Зарегистрирован: 28 май 2005, 12:07

И как в 2003 версии? Перехода по Enter'у тоже нет или есть?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

В 2003 перепрыгивает по Enter-у через гиперссылки нормально. Т.е. как раньше гиперссылка Entero-м не открывается.
Pafnutij_ru
Сообщения: 6
Зарегистрирован: 28 май 2005, 12:07

Мда. Ну, тогда может есть какая другая возможность перехода по нажатию Enter'a с ячейки А1 любого листа книги, на ячейку А1 первого листа?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Есть. прийдется макросы писать.

В модуле книги (т.е. ThisWorkBook) пришем

Код: Выделить всё

Private Sub Workbook_Open()
  Application.OnKey "~", "InsertProc"
End Sub

Ну а потом добавляем обычный модуль для макросов и пишем макрос:

Код: Выделить всё

Public Sub InsertProc()
  Dim C As Range
  On Error Resume Next
  Set C = ActiveCell
  If C.Hyperlinks.Count > 0 Then C.Hyperlinks(1).Follow Else C.Offset(1, 0).Activate
End Sub

Проверено в 2003. В XP скорее всего аналогично.

Идея слующая - при открытии книги (Workbook_Open())
вешаем на кливишу ENTER макрос InsertProc
Этот макрос проверяет наличие гиперссылки в активной ячейке и если есть переходит, иначе перемещает курсор вниз.

Только учтите макрос запускается даже если открыть какую-нибудь другую книгу :)

Наверное правильнее переопределять клавишу всякий раз при активации книги Workbook_Activate и отпускать ее при деактивации. Ну тут уж Вы сами переделаете я надеюсь...
Pafnutij_ru
Сообщения: 6
Зарегистрирован: 28 май 2005, 12:07

Спасибо, попробую.
Ответить