工作表更改目标+排序

时间:2014-09-17 08:10:24

标签: excel vba sorting excel-vba

我正在使用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更新到排序后的位置)

2 个答案:

答案 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