Добрый день, я если чесно не особо уверен что мне именно в этот раздел, но думаю модераторы если что поправят Вопрос стоит вот в чем, есть событие Оплата по договору, которое изменяется от "Ок" на "Оплачивать" возможно ли сделать что б всплывало окно уведомление типа "Сегодня оплачивать договора........" без перечисления договоров, чтоб напоминалка выскакивала, за 2 дня, за день, ну и в этот же день.......... я так думаю файл в автозагрузку, ну а там если что эксель сам напомнит......... задумка такая, возможно ли ее осуществить?????
Добрый день, я если чесно не особо уверен что мне именно в этот раздел, но думаю модераторы если что поправят Вопрос стоит вот в чем, есть событие Оплата по договору, которое изменяется от "Ок" на "Оплачивать" возможно ли сделать что б всплывало окно уведомление типа "Сегодня оплачивать договора........" без перечисления договоров, чтоб напоминалка выскакивала, за 2 дня, за день, ну и в этот же день.......... я так думаю файл в автозагрузку, ну а там если что эксель сам напомнит......... задумка такая, возможно ли ее осуществить?????pahomich
Private Sub Workbook_Open() Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Сроки-платежи") lr = sh.Cells(Rows.Count, 11).End(xlUp).Row Dim arrDate, arrStat, arrTime() As Integer arrDate = sh.Range("j5:j" & lr) arrStat = sh.Range("k5:k" & lr) Dim j As Integer: j = 0 For i = LBound(arrStat) To UBound(arrStat) If arrStat(i, 1) = "оплачивать" Then If arrDate(i, 1) - Date < 4 And arrDate(i, 1) - Date >= 0 Then ReDim Preserve arrTime(j) arrTime(j) = CInt(arrDate(i, 1) - Date) j = j + 1 End If End If Next i If (Not Not arrTime) <> 0 Then M = arrTime(0) For i = 1 To UBound(arrTime) If arrTime(i) < M Then M = arrTime(i) Next MsgBox "Оплачивать договора через " & M & " дней" End If End Sub
напоминалка выскакивала, за 2 дня, за день, ну и в этот же день
В формуле у Вас максимальная разница в датах 3 дня, в макросе так же сделала.
pahomich, здравствуйте. Как-то так можно:
[vba]
Код
Private Sub Workbook_Open() Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Сроки-платежи") lr = sh.Cells(Rows.Count, 11).End(xlUp).Row Dim arrDate, arrStat, arrTime() As Integer arrDate = sh.Range("j5:j" & lr) arrStat = sh.Range("k5:k" & lr) Dim j As Integer: j = 0 For i = LBound(arrStat) To UBound(arrStat) If arrStat(i, 1) = "оплачивать" Then If arrDate(i, 1) - Date < 4 And arrDate(i, 1) - Date >= 0 Then ReDim Preserve arrTime(j) arrTime(j) = CInt(arrDate(i, 1) - Date) j = j + 1 End If End If Next i If (Not Not arrTime) <> 0 Then M = arrTime(0) For i = 1 To UBound(arrTime) If arrTime(i) < M Then M = arrTime(i) Next MsgBox "Оплачивать договора через " & M & " дней" End If End Sub
Manyasha, ура все работает, только у меня вопрос, в столбце где оплата стоит до 2 ежемесячно, там проставлена не правильная дата столбец Е, и если исправить с 20 на 2 статус не меняется почему то, а раньше до работы макроса все нормально работало
Manyasha, ура все работает, только у меня вопрос, в столбце где оплата стоит до 2 ежемесячно, там проставлена не правильная дата столбец Е, и если исправить с 20 на 2 статус не меняется почему то, а раньше до работы макроса все нормально работало pahomich
pahomich, это я игралась с датами, чтобы проверить работу макроса:) Протяните формулу по столбцу J (прилагаю исправленный файл, другие формулы не трогала)
pahomich, это я игралась с датами, чтобы проверить работу макроса:) Протяните формулу по столбцу J (прилагаю исправленный файл, другие формулы не трогала)Manyasha