Excel VBA:当我删除一行时,让我的编号列表更新

时间:2014-08-12 15:29:05

标签: excel vba excel-vba

我的数据从第A8行开始,其中A被填充,每行增加1。我遇到了一个问题,如果我删除一行,那么这些数字现在就会出现故障(例如:1,2,3,5)。如果我最终删除一行数据,我希望我的宏能够更新这些数字。我有一个工作表更改子,一旦做出更改就会执行其他一些操作,因此我考虑将此部分添加到结尾。

任何帮助都会很棒。

完整的宏太长了,但是在这里:

If Target.Cells.Count > 1000 Then

    Application.EnableEvents = False
    If Worksheets("Testing Sheet").Range("H2").Value = "" Then
        Worksheets("Testing Sheet").Range("H2").Value = "SKU " & Worksheets("Detailed SKU List").Cells(Target.Row, 2).Value & " deleted on " & Date
    Else
        Worksheets("Testing Sheet").Range("H1").End(xlDown).Offset(1, 0).Value = "SKU " & Worksheets("Detailed SKU List").Cells(Target.Row, 2).Value & " deleted on " & Date
    End If
    Worksheets("Testing Sheet").Range("H1").End(xlDown).Font.Size = 8
    Worksheets("Testing Sheet").Range("H1").End(xlDown).Interior.Color = rgbLightBlue

    'Updates the row numbers


    Application.EnableEvents = True
    Exit Sub

End If

1 个答案:

答案 0 :(得分:1)

正如评论中所述,我不像你提议的那样做事的忠实粉丝,但是这样做的代码如下:

' Set the cells starting at A8 and all the way down to "ROW-7" (since you start at row 8, it starts at 1 and continues onward)
Worksheets("Testing Sheet").Range(Worksheets("Testing Sheet").Range("A8"), Worksheets("Testing Sheet").Range("A8").End(xlDown)).FormulaR1C1 = "=ROW()-7"

' Convert the formula to a value
Worksheets("Testing Sheet").Range(Worksheets("Testing Sheet").Range("A8"), Worksheets("Testing Sheet").Range("A8").End(xlDown)).Value = _
    Worksheets("Testing Sheet").Range(Worksheets("Testing Sheet").Range("A8"), Worksheets("Testing Sheet").Range("A8").End(xlDown)).Value

很长,但那是因为我每行代码引用Worksheets("Testing Sheet")几次。

希望这可以解决问题!