2013-04-24 54 views
1

我運行代碼VBA測試是否細胞右邊是小於0,如果是,則使活動單元格0。這應該運行在小區被輸入。這是我到目前爲止有:VBA計算單元格值之前如果/然後聲明

Private Sub worksheet_change(ByVal target As Range) 
If Not Intersect(target, Range("c7:c27")) Is Nothing Then isNegative 
End Sub 

然後

Sub isNegative() 
Dim cell As Range 
If ActiveCell.Offset(1, 0).Value < 0 Then 
ActiveCell.Value = 0 
End If 
End Sub 

但是,我認爲正在發生的事情是,它在計算前檢查數據。我該如何解決?

+0

'Application.Calculate'? – Gaffi 2013-04-24 14:05:16

回答

2

在進入小區時,這應該運行。

喜歡這個?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim aCell As Range 

    If Not Intersect(Target, Range("C7:C27")) Is Nothing Then 
     For Each aCell In Range("C7:C27") 
      If aCell.Offset(1, 0).Value < 0 Then aCell.Value = 0 
     Next 
    End If 
End Sub 
+0

好吧,我已經運行了這個工作,但我認爲它可以通過不在每個單元上運行它更高效。有沒有辦法更有效地做到這一點? – lebout 2013-04-24 14:08:21

+0

@ user2232633「Worksheet_change」事件也會觸發每個單元格的「更改」,所以這不會更低效。 – 2013-04-24 14:09:19

+0

@ user2232633:'如果沒有相交(目標,範圍(「C7:C27」))是沒有什麼Then'照顧它不會在代碼太深... – 2013-04-24 14:09:21

相關問題