2013-06-27 31 views
0

我試圖在滿足某些條件時顯示消息的代碼。在這種情況下,當Sheet2's A1's值等於或大於1000時應該發生。另一方面,該值由位於Sheet1中的公式定義。我想基於這個線程實現解決方案:How can I run a VBA code each time a cell get is value changed by a formula?Workbook_SheetChange沒有通過從其他工作表中的公式更改觸發

所以我得到這個:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim updatedCell As Range 
Set updatedCell = Range("A1") 

If Not Application.Intersect(updatedCell, Range("A:A")) Is Nothing Then 
    If updatedCell.Value >= 1000 Then 
     MsgBox "Something requires attention" 
    End If 
End If 
End Sub 

當我通過一些從Sheet2改變A1的價值,它的工作原理,但例如如果我把它定義爲=Sheet1!A7,並更改Sheet1's A7,沒有任何反應。

我怎麼能使它工作?

回答

0

那麼,鏈接的線程處理的問題,你想找出由當前更改重新計算的單元格。 (無論如何,Dependents方法僅適用於活動工作表上的公式,因此這不適用於工作表)。 就你而言,你已經知道你只想監視一個特定的(公式)單元格。
所以,我只想跟這個:
如果您知道Sheet2!A1只依賴sheet1上的值,請將此代碼放入sheet 1
正好趕上所有的變化,看看你的每一次:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Worksheets("Table2").Range("A1").Value >= 1000 Then 
     MsgBox "Something requires attention" 
    End If 
End Sub 

確保您使用工作表(...)範圍 - 空白Range可能錯誤狩獵的不眠之夜的根源。它是指代碼所在的工作表如果代碼位於工作表模塊中,並且代表活動工作表(如果它在另一個代碼模塊中)。

+0

很高興看到它比我更加簡單。非常感謝,@KekuSemau!此外,感謝@ Hiten004讓我的問題更加易懂! (如果答覆感謝不允許,請通知我,我將刪除它!) – user2529509

相關問題