我正在使用VBA事件Worksheet_Change来更新一些单元格值(在同一行中的另一个单元格被更改之后),并且还需要在更新之前对它们进行排序。但是在这里我遇到了问题,当我使用这个
时 If loadInProgress = False Then
If target.Column = 10 Or target.Column = 5 Then
Call datasetLabelChange
Call calculateModel(target)
End If
End If
datasetLabelChange - >是对工作范围进行排序的功能 calculateModel(target) - >是更新单元格的功能
然后排序没问题,但排序后(如果目标更改位置)目标没有正确的行和列值来执行单元格的更新。排序后是否有可能跟踪目标? (将他的.row和.column更新到排序后的位置)
答案 0 :(得分:0)
使用.EnableEvents = False
,因此例程不会尝试在自身上运行。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not CBool(loadInProgress) Then
On Error GoTo FallThrough
'next line important so it doesn't try to run on top of itself
Application.EnableEvents = False
If Target.Column = 10 Or Target.Column = 5 Then
Call datasetLabelChange
Call calculateModel(Target)
End If
End If
FallThrough:
'restore event triggers
Application.EnableEvents = True
End Sub
答案 1 :(得分:0)
我想你现在已经解决了这个问题
但是对于其他寻找相同事物的人来说,最简单的解决方案是使用 当使用sort时,以这种方式在引用中使用$符号,引用保持不变
例如= Sheet1!$ G $ 1将保持不变,而= sheet1!G1将保持不变
工作表更改示例还将通过调用更新所有公式的例程来解决您的问题
Martyn