2015-10-20 28 views
0

我有一個日期列,我希望在每個日期的一週後傳遞一個彈出來顯示。創建後彈出一個星期

我不知道任何宏。我每次打開文檔時都必須運行宏嗎?

這是我迄今所取得:

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

每次打開文檔時,是否都希望它運行?您的工作表正在填充新日期的過程是什麼? – Balinti

+0

嗨,我發現'私人小組Workbook_Open()',每當我打開文檔運行。該表是用手填充的。問題是否需要有一個'.xlsm'文件而不是'xlsx'或oder來運行vba命令? – Ctrlfreak

+1

是的。它必須是xlsm – Balinti

回答

1

從可用性的角度來看,不建議每個逾期項目都使用彈出窗口。你唯一能做的就是惹惱在三週假期後打開工作簿的可憐的草皮,並且必須在243個消息框中點擊確定。

作爲一種替代方法,您可能需要考慮條件格式來突出顯示工作表中過期的項目。條件格式化很容易完成,並且專爲該作業設計。

使用與條件格式相同的邏輯,您可以在任何項目過期時使用相同的邏輯,然後使用VBA彈出ONE SINGLE消息框,建議用戶照顧電子表格中突出顯示的數據。

當然,這可以在沒有VBA的情況下完成,在電子表格的單元格中使用條件格式在任何項目過期時顯示消息。

後者可以在任何Excel版本中使用,並且不需要任何文件類型,也不需要啓用宏的文件或與宏有關的任何環節。

請根據最終用戶設計您的電子表格。評論後

編輯:

考慮以下截圖:

enter image description here

在列A突出使用公式=A5<TODAY()-7

塔B在該式中B5使用條件格式做複製下來:=A5<=TODAY()-7,這是條件格式中使用的相同公式。

單元格B2有一個公式,它計算B5及以下版本中的「真」值,並在至少有一個TRUE值時顯示消息。其計算公式爲

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

這只是一個大致的輪廓。將消息單元格移至列A,隱藏列B,以便用戶不會看到TRUE/FALSE的內容,但只顯示關於需要照顧的事物和突出顯示的內容的消息。

+0

你是對的,我從循環中刪除了msgBox。但是我怎樣才能達到同樣的結果wthout vba? – Ctrlfreak

+0

我編輯了我的答案,以包含有關非VBA方法的詳細信息。 – teylyn

+0

但是,這只是突出顯示的值,沒有彈出。 – Ctrlfreak

相關問題