2013-02-26 74 views
0

我正在構建成本表。我輸入的每個成本行項目都會有一個有效期限,需要更新成本。我試圖讓一個消息框彈出以通知我何時成本超過了它的有效日期。在我的電子表格中,有效日期位於D列的「報價單」中,我在單元格B2的「數據輸入」表單上有實際日期。我也有複選框來選擇你想要包含哪些成本項目,當選擇填充列Q與True或False。我期望做的是做一個宏,當一個項目被選中時將運行。因此,措辭應該是這樣的:「如果列Q = True,並且如果列D小於」數據輸入「上的單元格B2,則MsgBox」Price is out of date!「」我也有小計,這些小計的日期空白所以我需要一些東西,如果列D是空白然後無視。謝謝你的幫助!我在網上找到了下面的內容並嘗試了一下,但沒有成功。彈出消息框如果滿足某些條件

Private Sub Worksheet_Change(ByVal Target As Range) 
'Only run if change made to D3, and D2 and D3 are not = "" 
If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub 

If Range("D:D").Value < Sheets("Data Entry").Range("B2").Value Then 
MsgBox "Cost is out of date!" 
End If 

End Sub 
+2

的StackOverflow將工作如果您先發布代碼嘗試,那麼對您而言會更好。然後,我們可以幫助引導您朝正確的方向發展,以便您的代碼按照您的要求運行。 – 2013-02-26 15:15:46

+0

您可能想重新考慮您的方法。如果有很少的潛在的過時成本,這可能會很好,但有很多消息框會變得非常干擾。不僅如此,每次工作表更改時都會彈出一條消息,發生的情況比您想象的要多。這可能會導致許多冗餘的消息。我建議使用過時的單元格地址填充一列。 – Sam 2013-02-26 22:53:20

回答

2

你需要一個條件添加到您的第一個IF結構,以檢查空白單元格,和Range(「d:d」)在你的第二個IF結構到目標:

Private Sub Worksheet_Change(ByVal Target As Range) 
'Only run if change made to D3, and D2 and D3 are not = "" 
If Intersect(Target, Range("D:D")) Is Nothing or IsEmpty(Target) Then Exit Sub 

If Target.Value < Sheets("Data Entry").Range("B2").Value Then 
    MsgBox "Cost is out of date!" 
End If 
+0

我還需要它來檢查列Q值TRUE,因爲我想在選擇複選框時激活這個列。 – 2013-02-26 16:21:08

+1

@JamieWalker:這不是freecoder.com! aardbark123爲您提供了一個解決方案,爲您提供了一個良好的方向。添加這個附加條件對你來說不應該那麼難!試試看,如果卡住了,就回來! – 2013-02-26 19:55:18

+0

我明白,但那是我遇到的主要問題是無法一起做兩個if語句。我一直在努力尋找不同的方式來做到這一點,因爲這仍然不起作用。 – 2013-02-26 20:00:02

相關問題