【发布时间】:2021-06-01 15:19:52
【问题描述】:
我有一个 B 列的 excel 表,其中包含超过 100 行,这些行是来自 RTD 链接的动态。
此 RTD 链接每秒更新一次,并且值不断增加,直到在给定时刻它变为零。我只需要在 C 列存储它变为零之前的最后一个值。
我尝试通过 sub(下面的代码),但我创建的循环导致 Excel 崩溃。
我认为最好的方法是使用 VBA 函数,我尝试过但没有成功。有人可以在函数中思考吗?
Private Sub Worksheet_Calculate()
Dim rng As Range
Set rng = Me.Range("B3:B7")
For i = 3 To 7
If Range("B" & i) > Range("C" & i) Then
Range("C" & i) = Range("B" & i)
End If
Next i
End Sub
【问题讨论】:
-
和昨天一样的问题?看起来很熟悉...您的 Excel 可能崩溃了,因为您正在修改计算事件中的数据,这会触发重新计算等。见stackoverflow.com/questions/13860894/…
-
它们是在同一秒内全部降为 0 还是在另一个时间降为每个值?降到 0 之前的最后一个值是最大值吗?
-
@funthomas,类似于我昨天发布的问题。我是按子制作的,但我认为按功能会更好。我只能通过计算事件触发,更改事件不是由 RTD 更新触发
-
@peh,每个值在不同的时刻归零。是的,零之前的最后一个值是最大值
-
我了解到您不能使用 Change 事件。但问题与给定链接中的问题相同:在触发器内操作工作表数据时停用事件 (
Application.EnableEvents = False)