trifnvoleg Свободен |
01-01-2010 - 20:51 Здравствуйте, Уважаемые! Всех от души с Новым годом! У меня такой вопрос (проблема) возник по ходу разработки макроса под Excel. Дело в следующем... На одном из листов моей рабочей книги имеется ячейка, в которую транслируется значение из ячейки с другого листа. Когда значение в этой ячейке изменяется, программа должна проанализировать изменение и выполнить определённые действия. Разумеется, я решил воспользоваться событием Worksheet_Change в Коде изменяемого листа. Но не тут-то было! Оказалось, что если этот лист не активен, то макрос никак не реагирует на это событие. Реакцию вызывает только НЕПОСРЕДСТВЕННОЕ изменение значения ячейки в АКТИВНОМ листе! Подскажите, пожалуйста, можно как-нибудь обойти эту проблему? Мне бы хотелось вообще не заглядывать на тот лист, и чтобы там всё происходило автоматически, без моего участия... Если я путано объяснил суть своей проблемы, то попробую сейчас показать её на простом примере. Если вы мне подскажете, как надо организовать работу программы в этом примере, то дальше я уже самостоятельно соображу... Итак, имеются два листа: Лист1 и Лист2. На Лист2 в ячейку А1 вписана формула "=Лист1!A1". Таким образом, когда мы изменяем значение в ячейке А1 первого листа, автоматически изменяется и значение в ячейке А1 второго листа. Теперь в Коде второго листа вписываем вот такую процедуру: Private Sub Worksheet_Change(ByVal Target As Range) MsgBox (Target) End Sub После этого при НЕПОСРЕДСТВЕННОМ изменении любой ячейки на Лист2, выскакивает сообщение с тем значением, которое мы вводим. Но когда мы изменяем ячейку А1 на первом листе, то сообщение не выскакивает (реакции на событие нет!), хотя значение в ячейке А1 второго листа тоже изменилось... Как заставить программу реагировать на изменение ячеек на НЕАКТИВНОМ в данный момент листе? |
||
trifnvoleg Свободен |
07-01-2010 - 23:49 Кому интересно, я ответ нашёл на свой вопрос!!! На одном форуме мне подсказали...
|