2016-04-24 61 views
1

我正在創建一個Excel表格,該表格將顯示客戶已付款和何時遲到。在朋友的幫助下,我能夠想出一個公式,通過突出顯示單元格紅色,告訴我們客戶是否已經過期。在Excel中使用日期值以應用VBA條件格式化

據我所見,沒有辦法獲得條件格式來將空白單元格改爲「LATE」,所以建議我嘗試使用VBA。

我已經能夠改變顏色,並添加我需要的話,但如何讓VBA檢查日期,如條件格式公式?

這裏是公式,我在我的VBA片什麼:

=AND(ISBLANK(B1),NOT(ISBLANK(B$1)),NOT(ISBLANK($A1)),DATE(YEAR($A1),MONTH($A1),DAY(B$2))<TODAY(),B$2<TODAY()) 

VBA

Const FORMATTED_RANGE As String = "$B:$ZY" 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Range(FORMATTED_RANGE)) Is Nothing Then Exit Sub 
    Dim cellColor As Long 
    Application.EnableEvents = False 
    Select Case Len(Target.Value) 
    Case ISBLANK 
     Target.Value = "LATE" 
     Target.Interior.Color = vbRed 
    Case Is <> 0 
     Target.Value = "PAID" 
     Target.Interior.ColorIndex = 10 
    End Select 
    Application.EnableEvents = True 
End Sub 

我使用了一些代碼,我在網上找到(感謝你是來自nullskull.com的Rolf Jaeger),所以我不是100%,如果我需要那裏的一切,但似乎工作正常,所以我暫時離開了,直到我學習了更多關於VBA的知識。

+1

您的公式是否真的有效,因爲'= AND(ISBLANK(B1),NOT(ISBLANK(B $ 1)),...........'總會給出你'假'爲'B1'canno不能同時空白和非空白。你能否提供樣本數據? – Mrig

+0

我不會推薦vba,你可以在你的條件格式中嘗試數字格式,比如我們使用美元符號($)的貨幣格式,所以不用美元符號,把'LATE'這個單詞...;) – Rosetta

+0

我將不會推薦VBA,因爲使用VBA來做這種格式化將使得工作表爬行速度 – Rosetta

回答

0

可能無法使用條件格式輸入文本,但可以更改字體顏色。一種解決方案可能是事先將「LATE」一詞放在指定的單元格中,並將字體顏色設置爲等於背景顏色,這使得該單詞不可見。當條件(公式)計算結果爲true時,新格式將改變字體顏色和出現後期詞無需要選用VBA

在另一方面:。將不是一個簡單的,如果配方是更好的事情是:

=if(amountpaid?,"PAID",if(late?, "LATE", "")) 

如果你願意,你可以然後用條件格式更改背景

+0

嘿馬可,我從來沒想過這個!對於這個應用程序,它會工作完美! 感謝一羣幫忙,是的,公式會更好大聲笑 – aglasier