Страницы: 1
RSS
Сообщение об изменившейся ячейке
 
Есть некий диапазон ячеек, значения в которых надо контролировать, чтоб они не менялись относительно заданных т.е. были равны вполне конкретным значениям (=0). Данные ячейки являются результатом целой огромной связки формул, поэтому существует опасность, что меняя некие данные, результаты в этих ячейках могут поменяться. В таком случае необходимо, чтобы появлялось окошко с сообщением, что значения в ячейках поменялись.Подскажите пожалуйста, как это можно сделать не применяя макросы.
 
Цитата
Allev написал:
не применяя макросы
Данные -Проверка данных. Других вариантов нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий Щербаков написал:
Данные -Проверка данных. Других вариантов нет.
Не работает. Это действует только на проверку ВВОДИМЫХ значений, а не уже существующих с заданными в них формулами.
 
Allev, проверку надо ставить на ячейки, куда вводятся данные, а критерий - равенство нулю других ячеек.
Пока нет файла-примера, это все разговор ни о чем.
 
Пример. Ячейка А5=А2+А1. Данные вводятся в А2 и А1. В А5 всегда должен быть нуль. Если вдруг там не нуль (а такое может быть) т.к. могут быть изменены значения в А2 и А1, то в центре экрана должно появиться окно с сообщением " ОШИБКА".  
 
Добрый день. Ну нарисуйте файл-пример, ну что вам, жалко, что ли? :)
Кому решение нужно - тот пример и рисует.
 
На А1:А2 Проверка данных, тип данных: другой, Формула: =$A$5=0 , Сообщение об ошибке - тип: Предупреждение или Сообщение, Сообщение: ОШИБКА
 
Цитата
Пытливый написал:
Добрый день. Ну нарисуйте файл-пример, ну что вам, жалко, что ли?
Нарисовала пример-файл. Нужно, чтоб в ячейке D2 контролировалось число 7. Причем в B2 и C2 могли вводится любые значения. Но если вдруг в D2 становится не 7, то сразу посреди экрана должно появиться окошко с сообщением ОШИБКА!  
 
Попробуйте. Сделано по алгоритму, который  предложил ув.Казанский.
Изменено: Пытливый - 22.03.2018 17:05:51
Кому решение нужно - тот пример и рисует.
 
Вы не поняли задачу. На  B2 и C2 никаких ограничений ставить нельзя т.к. в реале это не просто две ячейки, а целая цепочка ячеек с десятками формул, ведущих в гигантской базе данных из 5000 строк. Нужно просто уведомлять об изменении значения в ячейке D2 отличного от заданного.
 
В параметрах проверки данных вместо "останов" (в закладке сообщения об ошибке) укажите "предупреждение", или "сообщение". В остальном - тоже самое.
Кому решение нужно - тот пример и рисует.
 
Пытливый, в реале вместо В2 и С2  - это десятки ячеек, раскиданных по 40 файлам. На них всех НЕВОЗМОЖНО поставить ограничения, как сделано в примере. Ограничения нужно ставить только на D2. В этом вся сложность.
 
Цитата
Allev написал:
Подскажите пожалуйста, как это можно сделать не применяя макросы.
Тады, боюсь, - ой. :)
Кому решение нужно - тот пример и рисует.
 
окошки с сообщениями выводят только макросы(((( ?
 
Не только, вам же показали пример. Но вас не устраивает такой алгоритм, нужно реализовать другой алгоритм - отслеживать состояние значения ячейки. И по его изменению уже что-то делать - окошки показывать, звук включать и ругаться сквозь динамики на непонятном языке, переворачивать экран и т.д. Это надо кодом описывать все. :)
Хотя, может я еще чего не знаю, может сейчас корифеи с сак..эм..аксакалами подтянутся и придумают чего ещё, кто знает... :)
Кому решение нужно - тот пример и рисует.
 
Эти ячейки - промежуточный или конечный этап вычислений формул? Тогда листовое событие SheetCalculate должно подойти. Т.е. в модуль листа нужно засунуть обработчик этого события. А в этом обработчике уже проверять нужный диапазон, писать лог, ругаться на пользователя. Но если "Не применяя макросы" то не знаю)
Изменено: Anchoret - 22.03.2018 20:36:45
 
Есть функция ЕСЛИ(D2=0;ИСТИНА;ЛОЖЬ). Вот если бы можно было бы там прописать какую-нибудь функцию, выдающую окошко с сообщением.....

Еще нашла функцию MsgBox "Сообщение" (показать сообщение)...

Как бы их подружить?)))
Изменено: Allev - 22.03.2018 21:13:33
 
Цитата
Allev написала: ... MsgBox "Сообщение" ...
Это функция макросов, без которых желаемое не получится.
Приложил пример того, что  советовали, для работы макросы должны быть разрешены.
Изменено: ZVI - 23.03.2018 01:04:24
 
ZVI, Спасибо большое! В файле все работает отлично! Но мне нужно перенести этот макрос в другой файл. Я скопировала текст в Разработчик- Visual Basic  и сохранила. Но увы, не работает. Файл формата xlsm с разрешенными макросами (другие макросы в этом файле работали). Как грамотно переместить?
 
Цитата
Allev написал:
Я скопировала текст в Разработчик- Visual Basic  и сохранила.
В какой модуль скопировали? Нужно в модуль листа.
 
А где находится модуль листа?
 
Правый клик по ярлычку листа - исходные текст.  
 
Спасибо!!!! Все заработало!!! Только в Excel 2016 не "Исходный текст", а "Просмотреть код".
 
Рано я радовалась((( теперь сообщение об ошибке выдается при любом добавлении данных в файл....
 
Событие Calculate возникает при любом пересчёте. Если не будет выполняться условие (в данном случае <>7), то, естественно, получите сообщение.
 
Цитата
Юрий М написал:
Событие Calculate возникает при любом пересчёте. Если не будет выполняться условие (в данном случае <>7), то, естественно, получите сообщение.
В том то все и дело, что изменений не происходит. Водятся данные не касающиеся данной формулы, а сообщение все равно выскакивает.
 
Цитата
Юрий М написал:
возникает при любом пересчёте
 
Цитата
Allev написала: Рано я радовалась
Приложенный вариант поспокойнее будет, попробуйте
Код
Private Sub Worksheet_Calculate()
  Static OldValue
  With Me.Range("D2")
    If .Value <> OldValue Then
      If .Value <> 7 Then
        MsgBox "D2 <> 7", vbCritical, "ОШИБКА!"
      End If
    End If
    OldValue = .Value
  End With
End Sub
Изменено: ZVI - 23.03.2018 14:55:35
 
Цитата
ZVI написал:
Приложенный вариант поспокойнее будет, попробуйте
Спасибо! Действительно он спокойнее и без толку не паникует)))))
Страницы: 1
Наверх