Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Обработка события DoubleClick на ячейке в Excel


Автор: Eugene82 28.2.2006, 17:44
САБЖ

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

Итак, кто знает как запустить событие по DoubleClick, скажем на ячейке А1? (Кажется кто-то писал, что есть способ обработать двойной щелчок и нажатие Enter на ячейке).

Автор: Akina 28.2.2006, 17:57
Код

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

End Sub

Автор: Eugene82 28.2.2006, 20:33
Akina, извини что не там тему создал. Пришлось догадываться как Exсel должен определять, что двойной щелчок сделан именно по ячейке "А1". Оказывается вот так:
Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
AddressForm.Show
End If
End Sub

По двойному щелчку мышью всё работает, а вот нажатие Enter на ячейке игнорируется - подозреваю что так и должно быть, но всё таки хотелось бы чтобы и это событие обрабатывалось!

Ещё вопрос. Детский. Какой вид имеют значения Target? А то пришлось с .Address замарочиться, а адреса объединённых ячеек это целые диапазоны! Типа "$G$14:$AY$14". А в адресной строке высвечивается как "G14"!!! Пришлось провоцировать Excel на выдачу мне значения Target.Address, а вот само значение Target не показывает даже Debug.Print! Как быть?

Автор: Akina 1.3.2006, 11:00
Цитата(Eugene82 @ 28.2.2006, 21:33 Найти цитируемый пост)
нажатие Enter на ячейке игнорируется

Слушай, а может ты все-таки озаботишься самостоятельно посмотреть, какие события можно обрабатывать, а?

Цитата(Eugene82 @ 28.2.2006, 21:33 Найти цитируемый пост)
Какой вид имеют значения Target?

Там же русским по белому написано - As Range!!!

Автор: likhobory 1.3.2006, 11:25
Цитата(Eugene82 @ 28.2.2006, 20:33 Найти цитируемый пост)
Какой вид имеют значения Target?

Цитата(Eugene82 @ 28.2.2006, 20:33 Найти цитируемый пост)
Target As Range

для более близкого знакомства открой View-> Locals Window , поставь breakpiont на 2 строку (F9) и при выполнении кода ознакомься с содержимым Locals...

Автор: Eugene82 1.3.2006, 16:31
likhobory, посмотрел, спасибо. Понял что передаётся указатель на объект типа Range со всеми его свойствами - этим и объясняется отсутствие конкретного значения у Target. ...Зато можно использовать его свойства и методы (Если я не прав пусть Akina напишет мне значение Target для моего примера smile).

Akina, то что я увидел в Редакторе VB меня не удовлетворило - слишком мало событий можно обрабатывать - прям не верится. К тому же какой-то умный чел писал что нажатие Enter тоже можно обработать - жаль что тему ту удалили. Было бы на 1 глупый вопрос меньше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)