Взрослая социальная сеть
Текстовая версия форума
Знакомства для секса Регистрация


Worksheet_Change в VBA (Excel)

Текстовая версия форума: Архив компьютерного форума



Полная версия топика:
Worksheet_Change в VBA (Excel) -> Архив компьютерного форума


Страницы: [1]

trifnvoleg
Здравствуйте, Уважаемые!

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

У меня такой вопрос (проблема) возник по ходу разработки макроса под 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
Кому интересно, я ответ нашёл на свой вопрос!!! На одном форуме мне подсказали...
QUOTE

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

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

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

Страницы: [1]

Архив компьютерного форума -> Worksheet_Change в VBA (Excel)





Проститутки Киева | индивидуалки Москвы | Эротический массаж в Москве | Проститутки-индивидуалки Москва