结合Worksheet_Calculate和Worksheet_Change excel vba函数

时间:2018-05-13 11:31:31

标签: excel vba excel-vba excel-formula

在我的工作表中,列L列值正在通过其中的公式进行更新。每当L列数据发生变化时,我都需要运行一个更新MK列的函数。我正在使用以下功能

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列值更新的行执行此功能吗?

0 个答案:

没有答案