Окно сообщения на основе значения времени и диапазона - PullRequest
1 голос
/ 06 июня 2019

Заранее спасибо за любую помощь в этом.

Все еще довольно плохо знакомы с вещью Excel VBA.В идеале я хотел бы, чтобы какой-то код мог выполнять следующую функцию.

Вот мой пример;

У меня примерно 20 строк данных, столбец (A) содержит ссылки внутри, столбец (B)) с датой подачи заявки, в столбце (C) с формулой для расчета истекшего периода времени и в столбце (D) указано «ИСТИНА» или «ЛОЖЬ», если указанный период времени прошел.

Что я хотел быпроизойдет в определенное время суток, скажем, в 11:00 утра. Я хотел бы, чтобы появилось окно сообщения с текстом «Погони за документами».это будет отображаться, только если выполнено следующее условие, текст в столбце D: D = "TRUE".если «ЛОЖЬ», то игнорировать.

Мне бы хотелось, чтобы это сообщение появлялось только в указанное время, а не каждый раз, когда данные вводились в таблицу.

Можно ли ссылаться на другоеклетка из того же ряда?и показать ли это в текстовом поле?например, появляется текстовое поле с текстом «Chase Documents» вместе со значением из столбца (A).

Я понимаю, что это может быть невозможно, но любая помощь в этом будет приветствоваться.

Насколько я понял с кодом;

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Range("D:D").Find(what:="TRUE", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True) Is Nothing Then
        MsgBox "CHASE Documents!!"
    End If
   End Sub


Private Sub Workbook_Open()


    Application.OnTime TimeValue("11:00:00"), "Change"

    End Sub

Я продолжаю сталкиваться с сообщением об ошибке с кодом выше.

В идеале мне нужно напоминание в определенное времяв тот день, заявив, что документы должны преследоваться на основе значений в указанном столбце.

Опять же, любая помощь с этим будет принята с благодарностью!

Спасибо,

1 Ответ

0 голосов
/ 06 июня 2019

Вы были довольно близки с вашим кодом:

В ThisWorkbook добавить это:

Option Explicit

Private Sub Workbook_Open()

    Application.OnTime TimeValue("11:00:00"), "ChaseDocs"

End Sub

В любом module добавьте это (и измените имя листа):

Option Explicit

Sub ChaseDocs()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Your Sheet Name Here")

Dim rngSrc As Range
Set rngSrc = ws.Range("D:D").Find(what:="TRUE", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True)

    If Not rngSrc Is Nothing Then
        MsgBox "CHASE Documents!!" & vbCrLf & vbCrLf & rngSrc.Offset(, -3).Value
        'vbCrLf ==> means new line
        'rngSrc.Offset(, -3).Value ==> means get the value 3 columns to the left from current position
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...