Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 16:19   #1
screenshot
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию Как определить что ячейка редактируется

Всем доброго времени суток.
Собственно сабж.
Есть Addin. При нажатии на кнопку нужно определить, редактируется ли в данный момент пользователем какая-либо ячейка.(То есть мигает ли каретка внутри ячейки) Результатом поисков было только событие Change, но оно здесь никаким боком
Просьба помочь кто с данной темой на ты.
screenshot вне форума Ответить с цитированием
Старый 27.05.2010, 16:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А определить очень просто, поскольку вариантов-то нет.
Если вы вообще что-то можете определить макросом, - это значит, что в этот момент ни одна ячейка не находится в режиме редактирования.

Как только пользователь переведёт ячейку в режим редактирования - макросы останавливаются, и ни на какую кнопку просто не нажать...
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2010, 16:37   #3
screenshot
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А определить очень просто, поскольку вариантов-то нет.
Если вы вообще что-то можете определить макросом, - это значит, что в этот момент ни одна ячейка не находится в режиме редактирования.

Как только пользователь переведёт ячейку в режим редактирования - макросы останавливаются, и ни на какую кнопку просто не нажать...
Спасибо за быстрый ответ.
Ну на мою то кнопку нажать можно(у меня COM Addin, а кнопка на Command или Ribbon bar'e). Мои знания объектной модели минимальны, поэтому доп. вопрос: Что конкретно я могу попытаться сделать(например с Worksheet), чтобы точно определить редактирование.
Если конкретнее, то у меня дальше происходит печать через Worksheet.Printout и вот как раз перед этим мне нужно попросить юзера сохранить текущие изменения.
screenshot вне форума Ответить с цитированием
Старый 27.05.2010, 16:49   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Есть какое-то свойство у объекта Application, но не помню, какое.

Попробуйте прочитать значение свойства Application.Interactive - вдруг это оно...
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2010, 17:05   #5
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию

Не знаю поможет или нет, но можно попробовать отследить так

Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = Application.ActiveCell.AddressLocal
End Sub

размещать макрос в Worksheet
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах

Последний раз редактировалось alebed; 27.05.2010 в 17:15. Причина: Поспешил
alebed вне форума Ответить с цитированием
Старый 27.05.2010, 18:41   #6
screenshot
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от alebed Посмотреть сообщение
Не знаю поможет или нет, но можно попробовать отследить так

Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = Application.ActiveCell.AddressLocal
End Sub

размещать макрос в Worksheet
Вот это самое событие приходит только тогда, когда редактирование ячейки уже завершено. К сожалению это не мой случай.
Плюс я работаю в другой части песочницы - COM Addin и C++, так что я никуда не буду вставлять макросы
screenshot вне форума Ответить с цитированием
Старый 27.05.2010, 18:43   #7
screenshot
 
Регистрация: 27.05.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Есть какое-то свойство у объекта Application, но не помню, какое.

Попробуйте прочитать значение свойства Application.Interactive - вдруг это оно...
Interactive - хорошее свойство Но опять же не в ту степь. Насколько я понял оно помогает заблокировать ввод пользователя, когда это нужно.
screenshot вне форума Ответить с цитированием
Старый 28.05.2010, 06:43   #8
ELE-COM
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от screenshot Посмотреть сообщение
...у меня дальше происходит печать через Worksheet.Printout и вот как раз перед этим мне нужно попросить юзера сохранить текущие изменения.
Может тогда событие Workbook_BeforePrint поможет?
ELE-COM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить, что есть объединенные ячейки Solyarka Microsoft Office Word 9 26.12.2009 07:42
Как определить, что игроки играют оптимально? k1r1ch Помощь студентам 4 23.11.2009 22:31
Как записать, чтобы ячейка выдавала то же число, что введено в другой? abdumanon Microsoft Office Excel 6 09.04.2009 16:05
Как определить, что документ не сохранен? viter.alex Microsoft Office Word 4 17.01.2009 09:23
Как узнать какая колонка в DBGrid редактируется?? DangerousWulf БД в Delphi 3 31.01.2007 14:43