我對VBA非常陌生。我在工作表中有一個單元格,用於更新值。價值每月大約改變一次。有沒有辦法讓我記錄相鄰單元格中的值發生變化的那一天? 例如, 如果A1中的值今天從5更改爲6,我只想在A2中記錄今天的日期。Excel/VBA更新單元格每次在另一個單元格中更改值
我並不需要記錄以前的更改。
非常感謝!
我對VBA非常陌生。我在工作表中有一個單元格,用於更新值。價值每月大約改變一次。有沒有辦法讓我記錄相鄰單元格中的值發生變化的那一天? 例如, 如果A1中的值今天從5更改爲6,我只想在A2中記錄今天的日期。Excel/VBA更新單元格每次在另一個單元格中更改值
我並不需要記錄以前的更改。
非常感謝!
您可以使用Worksheet_SelectionChange事件。我想這取決於你在工作表中做了什麼,以確定它是否會觸發。 您必須將A1中的值與先前A1中的值進行比較,該值將存儲在另一個單元格中。
的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
謝謝!虐待它嘗試 – casualprogrammer
更新:
看來你需要計算事件也是因爲你正在使用公式。你可以嘗試這樣的事:
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
所以這工作奇妙,當我輸入一個不同的值,但單元格A1包含一個公式,自動date – casualprogrammer
@casualprogrammer我注意到加里的學生在我面前撿起來 - 如果你不想讓它更難無法訪問bloomberg功能的源代碼 –
我以爲我可以在A3中有一個單元格,當它自動調用時,就像A1 =或Value(A1)一樣,只需使用A3上的代碼就可以運行它代替。但是,這沒有任何工作 – casualprogrammer
如果您使用的是彭博功能細胞A1像BDP()或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
這工作真的很好!非常感謝 – casualprogrammer
worksheet_change事件應該幫助,但認爲該值是如何加入A1,它可以在這裏完成嗎? –
單元格** A1 **是否包含* Formula *或* Typed Value *? –
它在技術上是一個bloomberg函數,可以實時更新值@ Gary'sStudent – casualprogrammer