一周后创建弹出窗口

时间:2015-10-20 07:24:08

标签: excel excel-vba vba

我有一列日期,我想在每个日期的一周后通过弹出窗口显示。

我对宏没有任何了解。每次打开文档时都必须运行宏吗?

这是我到目前为止所做的事情:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Long
 For i = 1 To Rows.Count
   if Cells(i, 1).Value<(TODAY()+7) And Not IsEmpty(Cells(i, 1).Value) then
     MsgBox Cells(i,1).Value + "Needs your attention!"
     Cells(i, 1).Font.Color = vbRed
   End If
 Next i
End Sub
然而,还没有测试过它。

1 个答案:

答案 0 :(得分:1)

从可用性的角度来看,不建议为每个过期项目使用弹出窗口。你唯一能做到的就是惹恼在三周假期后打开工作簿的可怜的草皮,并且必须在243个消息框中点击OK。

作为替代方法,您可能需要考虑条件格式以突出显示工作表中的过期项目。条件格式很容易完成,专为该工作而设计。

使用与条件格式相同的逻辑,您可以确定是否有任何项目过期,然后使用VBA弹出ONE SINGLE消息框,建议用户处理电子表格中突出显示的数据。

当然,这可以在没有VBA的情况下完全完成,在电子表格的单元格中使用条件格式在任何项目过期时显示消息。

后者适用于任何Excel版本,具有任何文件类型,不需要启用宏的文件或任何涉及宏的箍。

请在设计电子表格时考虑最终用户。

评论后编辑:

请考虑以下屏幕截图:

enter image description here

A列中的突出显示是使用公式=A5<TODAY()-7

进行条件格式设置

B栏将B5中的这个公式复制下来:=A5<=TODAY()-7,这与条件格式中使用的公式相同。

Cell B2有一个计算&#34; true&#34; B5及以下的值,如果至少有一个TRUE值,则显示一条消息。公式是

=IF(COUNTIF(B5:B10,TRUE),"There are "&COUNTIF(B5:B10,TRUE)&" overdue items in the list","")

这只是一个粗略的轮廓。将消息单元格移动到A列,隐藏B列,这样用户就不会看到TRUE / FALSE内容,只会看到有关要处理的事情和突出显示的内容的消息。