2016-08-03 224 views
0

我對VBA非常陌生。我在工作表中有一個單元格,用於更新值。價值每月大約改變一次。有沒有辦法讓我記錄相鄰單元格中的值發生變化的那一天? 例如, 如果A1中的值今天從5更改爲6,我只想在A2中記錄今天的日期。Excel/VBA更新單元格每次在另一個單元格中更改值

我並不需要記錄以前的更改。

非常感謝!

+0

worksheet_change事件應該幫助,但認爲該值是如何加入A1,它可以在這裏完成嗎? –

+0

單元格** A1 **是否包含* Formula *或* Typed Value *? –

+0

它在技術上是一個bloomberg函數,可以實時更新值@ Gary'sStudent – casualprogrammer

回答

0

您可以使用Worksheet_SelectionChange事件。我想這取決於你在工作表中做了什麼,以確定它是否會觸發。 您必須將A1中的值與先前A1中的值進行比較,該值將存儲在另一個單元格中。

1

Worksheet_Change()當紙張上的東西改變其價值正在被解僱,所以添加這樣的事情你的表,Codemodule:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address = "$A$1" Then 

    Debug.Print "A1 has been changed!" 
    'do something 
End If 
End Sub 
+0

謝謝!虐待它嘗試 – casualprogrammer

1

更新:

看來你需要計算事件也是因爲你正在使用公式。你可以嘗試這樣的事:

Private Sub Worksheet_Calculate() 

    Application.EnableEvents = False 

    ActiveSheet.Calculate 
    DoEvents 

    With Range("A1") 
     .Value = .Value 
     DoEvents 
    End With 

    Application.EnableEvents = True 

End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$A$1" Then 
     Range("A2").Value = Date 
    End If 

End Sub 
+0

所以這工作奇妙,當我輸入一個不同的值,但單元格A1包含一個公式,自動date – casualprogrammer

+0

@casualprogrammer我注意到加里的學生在我面前撿起來 - 如果你不想讓它更難無法訪問bloomberg功能的源代碼 –

+0

我以爲我可以在A3中有一個單元格,當它自動調用時,就像A1 =或Value(A1)一樣,只需使用A3上的代碼就可以運行它代替。但是,這沒有任何工作 – casualprogrammer

2

如果您使用的是彭博功能細胞A1BDP()BDH()BDS(),那麼你可以使用Worksheet_Calculate()事件宏來檢測該單元格中的更改。

在這個例子中,我使用細胞A3「存儲」,以避免重新發布日期過於頻繁:

Private Sub Worksheet_Calculate() 
    Application.EnableEvents = False 
     If [A1] <> [A3] Then 
      [A3] = Range("A1").Value 
      [A2] = Date 
      MsgBox "Date recorded" 
     End If 
    Application.EnableEvents = True 
End Sub 
+0

這工作真的很好!非常感謝 – casualprogrammer

相關問題