Страницы: 1
RSS
Вывод MsgBox при выполнении условия в ячейках диапазона
 
Доброго всем времени суток! Прошу помощи в решении следующей задачки. В книге несколько листов. На каждом содержится ФИО, продукт (полис) и вычисляется количество дней до окончания срока его действия.  
Необходимо чтобы при открытии книги или в уже открытой книге при изменении значений  в ячейках по столбцам "Дней до окончания" на любом указанном в макросе листе появлялось сообщение. В нем необходимо перечислить все ячейки в которых осталось дней меньше 15 в формате "Имя листа" + "ФИО" + "Продукт" + "количество оставшихся дней". Возможно ли такое реализовать? Заранее благодарен за ответы!
 
Возможно) Такой ответ подойдет?)
 
А помочь конкретным примером макроса?
 
Ну например так можно. А вообще разные варианты есть.
 
Сегодня день ворчания...  
User386, MsgBox непродуктивно: Вы что - будет скрины делать с них или у Вас отличная память? А если листов 10-20? Лучше завести "лишний лист" и там формировать таблицу.  
Влад, при большом количестве листов придётся в каждом писать процедуру вызова макроса. А можно один раз: в модуле книги есть Workbook_SheetChange
 
Спасибо, учту)
 
Влад, спасибо! Именно то, что нужно. Единственное при открытии книги не проверяется, но это, думаю,  поправимо.  
Юрий М, абсолютно согласен с Вашим замечанием по поводу нового листа. Соответственно прошу помощи на реализацию Вашей идеи. Лист может быть заранее создан руками. Создавать его макросом нет необходимости.
 
Держите.
 
Спасибо огромное!!! То что нужно. И код изящный. Я думал будет страшнее. Единственный вопрос, который возник: как автоматически очистить лист "Архив" при закрытии книги? А то дубликаты размножаются...  
Или , если реализовать проще, при добавлении записи в листе "Архив" проверять нет ли уже строки, содержащей пару "ФИО/Вид полиса" и при наличии таковой обновить ячейку "Дней до окончания". Но тогда возникает заморочка как удалить строки в которых значения дней будет больше указанного порога (в случае продления полиса).
 
Дописал в книгу:  
 
Sub ClearSheet()  
ThisWorkbook.Sheets(3).Cells.ClearContents  
End Sub  
 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
Call ClearSheet  
End Sub  
 
что-то не работает
 
Лучше в модуль "ЭтаКнига":  
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
Me.Sheets("Архив").Cells.ClearContents  
End Sub  
 
Вызов процедуры из общего модуля теперь вообще лишний.
 
А зачем перед закрытием? Ещё вопросы всякие начнёт задавать... :-) Можно ведь и при открытии сначала очистить, а потом уже...  
Не понял про лишний вызов процедуры.
 
Ещё:  
{quote}{login=Влад}{date=18.07.2012 04:51}{thema=}{post}  
Me.Sheets("Архив").Cells.ClearContents{/post}{/quote}Так ведь и заголовки почистим :-)
 
Зачистку листа сделал так:  
Private Sub Workbook_Open()  
Me.Sheets("Архив").Range("A2:D1000").ClearContents  
Call Check  
End Sub  
 
Два НО. 1)Непонятно только как прописать очистку всех строк листа, кроме первой (в ней заголовки столбцов) поэтому указал диапазон.  
2)как заставить при открытии книги появляться сообщение в случае если на листе "архив" есть записи или на любом листе в 4й колонке есть значения меньше 15 ?
 
Вот.
 
Юрий , Влад, большое Вам спасибо!!! Все работает.
 
Извиняюсь, еще один вопрос возник. Помогите реализовать проверку заполненности ячеек по столбцу "А". т.е. если в ячейке не указаны ФИО (ячейка не заполнена) эта строка не попадала бы в выборку на лист "Архив"
 
Добавьте ещё одну проверку:  
If Not IsEmpty(cl.Offset(0, -3)) Then
 
Спасибо! Получилось!
Страницы: 1
Читают тему
Наверх