![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
![]()
Здравствуйте, Уважаемые!
У меня такой вопрос (проблема) возник по ходу разработки макроса под 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 второго листа тоже изменилось... Как заставить макрос реагировать на изменение ячеек на НЕАКТИВНОМ в данный момент листе? |
![]() |
![]() |
![]() |
#2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
На втором листе используйте событие Код:
Код:
Цитата:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 07.01.2010 в 22:06. |
||
![]() |
![]() |
![]() |
#3 | ||
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
![]() Цитата:
На самом деле, я этот вопрос задаю уже на ЧЕТВЁРТОМ форуме!!! На одном (не тематическом форуме, но в тематическом разделе) мне не ответили вообще... На форуме, посвящённом "Профессиональной работе в Excel", мне замутили какую-то лажу, а потом попросили сообщить им самим, если я узнаю ответ на этот вопрос. На форуме, посвящённом программированию на всех диалектах Бэйсика, включая и VBA, мне предложили именно этот вариант решения проблемы: Цитата:
Самое интересное, что на всех тех форумах, за исключением нетематического, просмотров моей темы было больше сотни и ответов на каждом из обоих этих форумов около 10 штук, но НИКТО не додумался до такого простого и ГЕНИАЛЬНОГО (!!!) решения проблемы! Я имею в виду метод Worksheet_Calculate !!! Ещё раз огромное спасибо! |
||
![]() |
![]() |
![]() |
#4 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
![]() Видимо, какие-то далёкие от Excel форумы Вы выбирали... Цитата:
Но этот вариант касается только случая РУЧНОГО изменения ячеек - если данные в Excel попадают через DDE из другой программы, то тут подойдёт только событие Worksheet_Calculate |
||
![]() |
![]() |
![]() |
#5 | |||
Пользователь
Регистрация: 07.01.2010
Сообщений: 30
|
![]() Цитата:
![]() Цитата:
![]() Цитата:
![]() А "историю" попыток использовать в моём макросе метод Workbook_SheetChange , и почему он мне не подошёл, все желающие могут прочитать как раз в тех самых темах (на тех двух форумах), которые "выдаст" поисковик Гугл в первых двух результатах поиска... ![]() |
|||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
"Поймать" событие нажатия на кнопку | Lisi4ka | Общие вопросы Delphi | 12 | 27.04.2009 18:14 |
TRichViewEdit - как отловить событие "курсор над таблицей" | chandrasecar | Компоненты Delphi | 0 | 05.04.2009 20:04 |
C++ StringGrid событие "правый клик" | FW-TOT | Помощь студентам | 2 | 03.03.2009 19:17 |