Есть ли событие MouseUp для рабочего листа?

У меня есть пользовательская форма с элементом управления Treeview, и я перетаскиваю узлы из этого элемента управления и помещаю их на рабочий лист. Эта часть работает нормально, но мне нужно знать адрес ячейки (или хотя бы номер строки), где пользователь удалил узел. Я надеялся найти что-то вроде события MouseUp и функции hittest, но, видимо, Excel не предоставляет эту функциональность.

Конечно, можно проверить Worksheet_SelectionChange, который происходит вскоре после _OLECompleteDrag, но мне он не кажется «надежным способом».

Любые идеи?


person mtelis    schedule 15.05.2011    source источник


Ответы (1)


Вы должны поместить свой код в модуль листа (в каталог Microsoft Excel Objects при просмотре Project Explorer VBA), а не в отдельный модуль в каталоге Modules. По сути, вам нужен обработчик событий, который запускает нужный вам процесс.

Это выполнит запуск и покажет адрес ячейки при запуске.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    MsgBox (Target.Address)

End Sub

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

person frenchie    schedule 19.05.2011
comment
Я говорил о том же: событие изменения рабочего листа в сочетании с таймером (событие должно произойти вскоре после OLECompleteDrag. Я реализовал это, и это работает, но я искал лучшее решение. - person mtelis; 20.05.2011