我有一列日期,我想在每个日期的一周后通过弹出窗口显示。
我对宏没有任何了解。每次打开文档时都必须运行宏吗?
这是我到目前为止所做的事情:
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
然而,还没有测试过它。
答案 0 :(得分:1)
从可用性的角度来看,不建议为每个过期项目使用弹出窗口。你唯一能做到的就是惹恼在三周假期后打开工作簿的可怜的草皮,并且必须在243个消息框中点击OK。
作为替代方法,您可能需要考虑条件格式以突出显示工作表中的过期项目。条件格式很容易完成,专为该工作而设计。
使用与条件格式相同的逻辑,您可以确定是否有任何项目过期,然后使用VBA弹出ONE SINGLE消息框,建议用户处理电子表格中突出显示的数据。
当然,这可以在没有VBA的情况下完全完成,在电子表格的单元格中使用条件格式在任何项目过期时显示消息。
后者适用于任何Excel版本,具有任何文件类型,不需要启用宏的文件或任何涉及宏的箍。
请在设计电子表格时考虑最终用户。
评论后编辑:
请考虑以下屏幕截图:
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内容,只会看到有关要处理的事情和突出显示的内容的消息。