Closed TopicStart new topicStart Poll

Страницы: (1) 1 
trifnvoleg
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 1187
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Здравствуйте, Уважаемые!

Всех от души с Новым годом!

У меня такой вопрос (проблема) возник по ходу разработки макроса под 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
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 1187
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Кому интересно, я ответ нашёл на свой вопрос!!! На одном форуме мне подсказали...
QUOTE

В данном случае событие Worksheet_Change для второго листа и не генерируется...

На втором листе используйте событие

Private Sub Worksheet_Calculate()
' Срабатывает пересчёт формул на листе
End Sub

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (1) 1

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

JavaScript

•••Проблема с компом•••

AMD или INTEL

NHL 2008

проблемы с материнкой Asus M2N32-SLI Deluxe/Wi-Fi



>