Обработка событий на рабочем листе

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

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

Ответить
morgacev
Сообщения: 1
Зарегистрирован: 01 сен 2004, 09:27

Дорое время суток!
Подскажите пожалуйста как можно навесить выполнение процедуры на выделение ячейки на листе.
Необходимо для сортировки в табличке т.е. клацнул по полю в шапке и табличка сортируется.

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

Можно, конечно, и на смену выделения ячейки, но несомненно лучше делать это на двойной щелчок, так как смена выделения будет срабатывать и при перемещении табличного курсора стрелками.

В модуле того самого листа на объект Worksheet добавьте нужный обработчик:
SelectionChange - На смену выделения
BeforeDoubleClick - на двойной щелчок

На всякий случай, немного о том, как добавляется обработчик:
Из оукна проекта откроем модуль листа Лист1 (или ка он там называется).
Над текстом модуля выше есть 2 поля со списком.
В левом выберем объект Worksheet а в правом название события BeforeDoubleClick.
Получится:

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

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub
Чтобы узнать, какую ячейку пощелкали будем использовать параметр Target, а в конце работы сделаем Cancel=true, чтобы не происходило то, что обычно происходит при двойном щелчке (а происходило только наше действие)

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

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Select Case Target.Address
    Case "$A$1"
      range(...).Sort ...
      Cancel = True
    Case "$A$2"
      range(...).Sort ...
      Cancel = True
  End Select
End Sub
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Заголовок сообщения: VBA&Excel
morgacev, Вам замечание: "Неподходящее название темы". Здесь более половины сообщений являются сообщениями по теме VBA&Excel.

Тема была переименована.
Ответить