我有一个与实时数据相关联的单元格(A1)(= Tickers!Z12)。我希望在五分钟内捕获所有价格范围。我的问题是我正在尝试使用Worksheet_Change方法,但如果单元格(A1)的公式化,则值不会更新。如果我手动更改值,它工作正常。但我需要捕获公式生成的值,然后复制&每次值更改时粘贴B列中的值。这是我到目前为止所拥有的。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("A1").value <> Range("B2").value Then
Range("A1").Select
Selection.Copy
With ActiveSheet
LastRow = .Cells(.rows.Count, "B").End(xlUp).row + 1
.Cells(LastRow, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues
End With
End If
Application.CutCopyMode = False
Application.EnableEvents = True
End Sub
答案 0 :(得分:0)
尝试使用Worksheet_Calculate事件。
另外,我不确定你想比较A1和B2。逻辑规定你应该将它与B列中的最后一个单元格进行比较。
另外,使用Activesheet并不是一个好主意,因为重新计算可能发生在任何其他工作表上,并且您不想在随机工作表上写入值。
还有一件事:不要在宏中使用复制粘贴。只需要.Value = .Value。
Private Sub Worksheet_Calculate()
Dim lngLastRow As Long
On Error Goto SkipAllThis
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Source") 'or whatever sheet has your code and stores your values
lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
If .Range("A1").Value <> .Cells(lngLastRow, 2).Value Then
.Cells(lngLastRow + 1, 2).Value = Range("a1").Value
End If
End With
SkipAllThis:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)