在我的工作表中,列L
列值正在通过其中的公式进行更新。每当L
列数据发生变化时,我都需要运行一个更新M
和K
列的函数。我正在使用以下功能
Private Sub Worksheet_Calculate()
Dim Ticker As Worksheet
Dim target As Range, val As Long, LastRaw As Long, i As Long
Set Ticker = Workbooks("FyersOne.xlsm").Sheets("Ticker")
LastRaw = Range("A" & Rows.Count).End(xlUp).Row
Set target = Ticker.Range("L2:L" & LastRaw)
If Not Intersect(target, Range("L2")) Is Nothing Then
For i = 2 To LastRaw
Ticker.Cells(i, "M").Value = Ticker.Cells(i, "J").Value - Ticker.Cells(i, "K").Value
Ticker.Cells(i, "K").Value = Ticker.Cells(i, "J").Value
Next i
End If
End Sub
我只需要将函数运行到那些L
列数据正在更新的行。但是使用上面的代码,该函数正在计算所有行。 L列数据将在每行的不同时间更新,因此我只需要为这些行运行函数。
如果我使用Worksheet_Change
函数,我可以检查L列中正在更新的行。但问题是Worksheet_Change
不会触发,因为值会通过函数更改。
此外,由于代码每次都遍历所有行,因此excel变慢。有什么办法可以只对那些L
列值更新的行执行此功能吗?