基于时间和范围值的消息框

时间:2019-06-06 15:19:49

标签: excel vba

在此先感谢您的帮助。

对于整个excel VBA来说还是很新的东西。理想情况下,我希望一些代码能够执行以下功能。

这是我的例子;

我大约有20行数据,(A)列中包含引用,(B)列中包含申请日期,(C)列中包含用于计算经过时间的公式,并且(D)列中的状态为“ TRUE”或“ FALSE”(如果指定的时间段过去了)。

我想在一天的某个特定时间发生,例如上午11:00,我希望出现一个消息框,显示文本“ Chase Documents”。仅当满足以下条件时,才会出现此消息:D:D列中的文本=“ TRUE”。如果为“ FALSE”,则忽略。

我只希望此消息出现在给定的指定时间,而不是每次都将数据输入到工作表中。

是否还可以引用同一行中的另一个单元格?并显示在文本框中?例如出现文本框,其中包含文本“ 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 :(得分:0)

您已经非常接近您的代码了:

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