ClearContents和Shift数据在下方而不删除行/单元格

时间:2018-04-19 18:11:23

标签: excel vba range offset

我自动化电子表格清理工具,如果某些值位于特定列中,则会从电子表格中删除数据。最初,如果找到特定值,它会删除整行数据。但是,这会通过删除行导致大量引用错误。以下原始代码示例。

Set rData = .Range("L5:L" & last & ",AX5:AX" & last)
    For i = rData.Row To rData.Row + rData.Rows.Count - 1
        If .Range("AX" & i) = "DONE" Or .Range("AX" & i) = "CANCEL" Then
            .Range("A" & i, "AX" & i).Copy

            bottom = activewkb.Worksheets("OrderStatus").Range("I" & Rows.Count).End(xlUp).Row + 1
            activewkb.Worksheets("OrderStatus").Range("A" & bottom).PasteSpecial Paste:=xlPasteValues
            If i > 0 Then
                .Range("D" & i & ":CA" & i).ClearContents
            End If
        End If
    Next i

摆脱参考错误的最简单方法是,如果满足要求,则清除D列到DD列中的内容,然后将其下面的所有数据向上移动到D列到DD上一行。新代码如下。我在.Range(" D"& i).Offset(1,0).Value line上收到错误。

Set rData = .Range("L5:L" & last & ",AX5:AX" & last)
    For i = rData.Row To rData.Row + rData.Rows.Count - 1
        If .Range("AX" & i) = "DONE" Or .Range("AX" & i) = "CANCEL" Then
            .Range("A" & i, "AX" & i).Copy

            bottom = activewkb.Worksheets("OrderStatus").Range("I" & Rows.Count).End(xlUp).Row + 1
            activewkb.Worksheets("OrderStatus").Range("A" & bottom).PasteSpecial Paste:=xlPasteValues
            If i > 0 Then
                .Range("D" & i & ":CA" & i).ClearContents
                .Range("D" & i).Offset(1, 0).Value
                .Offset(1, 0).Select
            End If
        End If
    Next i

任何建议表示赞赏!提前谢谢。

0 个答案:

没有答案