Можно ли по двойному клику в ячейке запускать макрос?
Или в такую ячейку надо обязательно рисовать кнопку, которая и будет это делать?
Спасибо.
в такую ячейку надо обязательно рисовать кнопку, которая и будет это делать
Можно юзать просто рисунок.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub
Может я чего-то не так делаю или не понял. Но вставив этот код я дважды нажимаю на ячейку и, как и прежде, попадаю в режим ввода текста.
Так мне-то надо, что бы потом обрабатывался именно тот ряд, в котором этот рисунок или кнопка находятся (происходит изменение цвета заливки всего ряда для обозначения наступления события "выполнено", либо вставка времени в нужную ячейку). Вот можно ли такую привязку сделать?
Может быть так будет понятне (а может и нет, потому что опять многословно):
у меня ряд начинается с названия документа и в сл. ячейках я ставлю время прохождения этапов обработки (время 1-й распечатки, время правки, "сдано"). Пока руками делается так. Я делаю документ, распечатываю его, пишу время (автоматизировать не нужно). Потом мне приносят док на правку. Я его отыскиваю в куче папок, открываю в программе, правлю, распечатываю и руками ставлю время правки. Потом мне дают команду "готово" и я опять отыскиваю в папках этот док и выкладываю его на сервер. (Отыскивать приходится, потому что постоянно занимаешься след. документом, а потом возвращаешься к какому-то из предыдущих).
А при автоматизации, я бы нажав на кнопку в ряду, соответствующем нужному доку, открывал бы его для правки, а нажав сл. кнопку, он бы копировался на сервер без моего лазания по папкам. Пока я это сделал в виде всего двух кнопок. Т.е. мне надо поставить курсор на нужный ряд и потом нажать соотв. кнопку "правка" или "на сервер", которые вынесены в отдельное место. А если бы такие кнопки были сделаны для каждого документа, то не приходилось бы скакать по экрану, а сразу найдя нужный док, тут же и нажать нужную кнопку. Вот такое извращенческое пожелание :o .
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub
Да, кстати - ведь есть же событие и не надо ничего выдумывать.
Проверил бы сам, но я - на линуксе.
Dmitry2064, ну и задумки у тебя.. :)
В приложенном файле все работает. Когда ту же конструкцию:
If Target = [A3] Then MsgBox "Получилось!"
End Sub
пишу в свой WorkSheet - шиш! :eek: (что я только не нажимал, и что я только не сравнивал - и свойства ячейки, и защита листа и пр.) Прямо как у Жванецкого, "все тоже самое, а не берет!" :D
Может есть какя-то скрытая опция в чем-то?
И если не сложно еще вопрос появился.
Если у меня таких рядов 30 штук - придется писать 30 раз
If Target = [A1...30] Then?
Или можно что-то по-интеллигентнее придумать?
Ой, а оно независимо от ряда повторяет эту процедурку. Если в колонке A в любом ряду, то двойной клик обрабатывается. Это правильно? (хотя мне это удобно).
Кстати, процедура Worksheet_BeforeRightClick не повторяется по всему столбцу (в отличие до BeforeDoubleClick).
Т.е. вопрос значит остался. Можно ли как-то прописать обраотку таким образом всего столбца без многократного перечисления If Target = [A1...30]?
Спасибо.
Set r = Application.Intersect(Range("A1:A30"), Target)
If Not r Is Nothing Then MsgBox "la-la-la"
Не нарадуюсь. Спасибо еще раз.