Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли по двойному клику в ячейке запускать макрос?

248
29 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Можно ли по двойному клику в ячейке запускать макрос?

Или в такую ячейку надо обязательно рисовать кнопку, которая и будет это делать?

Спасибо.
251
29 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Dmitry2064
Можно ли по двойному клику в ячейке запускать макрос?


Цитата: Dmitry2064

в такую ячейку надо обязательно рисовать кнопку, которая и будет это делать


Можно юзать просто рисунок.

459
29 ноября 2007 года
gacol
273 / / 12.02.2003
Конечно, напрмер для ячейки А1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub
248
29 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Цитата: gacol
Конечно, напрмер для ячейки А1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub



Может я чего-то не так делаю или не понял. Но вставив этот код я дважды нажимаю на ячейку и, как и прежде, попадаю в режим ввода текста.

Цитата:
От SkyM@n: Можно юзать просто рисунок.


Так мне-то надо, что бы потом обрабатывался именно тот ряд, в котором этот рисунок или кнопка находятся (происходит изменение цвета заливки всего ряда для обозначения наступления события "выполнено", либо вставка времени в нужную ячейку). Вот можно ли такую привязку сделать?

Может быть так будет понятне (а может и нет, потому что опять многословно):
у меня ряд начинается с названия документа и в сл. ячейках я ставлю время прохождения этапов обработки (время 1-й распечатки, время правки, "сдано"). Пока руками делается так. Я делаю документ, распечатываю его, пишу время (автоматизировать не нужно). Потом мне приносят док на правку. Я его отыскиваю в куче папок, открываю в программе, правлю, распечатываю и руками ставлю время правки. Потом мне дают команду "готово" и я опять отыскиваю в папках этот док и выкладываю его на сервер. (Отыскивать приходится, потому что постоянно занимаешься след. документом, а потом возвращаешься к какому-то из предыдущих).
А при автоматизации, я бы нажав на кнопку в ряду, соответствующем нужному доку, открывал бы его для правки, а нажав сл. кнопку, он бы копировался на сервер без моего лазания по папкам. Пока я это сделал в виде всего двух кнопок. Т.е. мне надо поставить курсор на нужный ряд и потом нажать соотв. кнопку "правка" или "на сервер", которые вынесены в отдельное место. А если бы такие кнопки были сделаны для каждого документа, то не приходилось бы скакать по экрану, а сразу найдя нужный док, тут же и нажать нужную кнопку. Вот такое извращенческое пожелание :o .

459
29 ноября 2007 года
gacol
273 / / 12.02.2003
вот пример
251
29 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: gacol
Конечно, напрмер для ячейки А1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox "Получилось!"
End Sub


Да, кстати - ведь есть же событие и не надо ничего выдумывать.
Проверил бы сам, но я - на линуксе.
Dmitry2064, ну и задумки у тебя.. :)

248
29 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Цитата: gacol
вот пример


В приложенном файле все работает. Когда ту же конструкцию:

 
Код:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, ByRef Cancel As Boolean)
   If Target = [A3] Then MsgBox "Получилось!"
End Sub

пишу в свой WorkSheet - шиш! :eek: (что я только не нажимал, и что я только не сравнивал - и свойства ячейки, и защита листа и пр.) Прямо как у Жванецкого, "все тоже самое, а не берет!" :D
Может есть какя-то скрытая опция в чем-то?
248
29 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Оказывается, код надо было размещать не в модуле, а в листе, где это должно работать. Фу-ты, чуть не поседел... :mad:

И если не сложно еще вопрос появился.
Если у меня таких рядов 30 штук - придется писать 30 раз
If Target = [A1...30] Then?
Или можно что-то по-интеллигентнее придумать?

Ой, а оно независимо от ряда повторяет эту процедурку. Если в колонке A в любом ряду, то двойной клик обрабатывается. Это правильно? (хотя мне это удобно).

Кстати, процедура Worksheet_BeforeRightClick не повторяется по всему столбцу (в отличие до BeforeDoubleClick).
Т.е. вопрос значит остался. Можно ли как-то прописать обраотку таким образом всего столбца без многократного перечисления If Target = [A1...30]?

Спасибо.
459
30 ноября 2007 года
gacol
273 / / 12.02.2003
тогда так
Set r = Application.Intersect(Range("A1:A30"), Target)
If Not r Is Nothing Then MsgBox "la-la-la"
248
30 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Спасибо большое. Все стало работать как часы.
248
11 декабря 2007 года
Dmitry2064
590 / / 06.12.2006
Кстати, поразительно удобная вещь. Если учет каких-то файлов (документов) организовать в Екселе, то такими "щелчками" можно быстро-пребыстро расправиться с кучей всего.
Не нарадуюсь. Спасибо еще раз.
99K
18 сентября 2017 года
sasha_raketa1337
1 / / 18.09.2017
спасибо
99K
25 октября 2017 года
telega322
1 / / 25.10.2017
Ох, тоже не мог найти, спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог