Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:删除行时,更新编号列表_Vba_Excel - Fatal编程技术网

Excel VBA:删除行时,更新编号列表

Excel VBA:删除行时,更新编号列表,vba,excel,Vba,Excel,我有从A8行开始的数据,其中A由每行增加1的数字填充。我遇到了一个问题,如果我删除一行,这些数字现在就不符合顺序(例如:1,2,3,5)。如果我最终删除了一行数据,我希望我的宏能够更新这些数字。我有一个工作表变更子模块,一旦发生变更,它会做一些其他的事情,所以我想把这部分添加到最后 任何帮助都会很好 完整宏太长,但此处: If Target.Cells.Count > 1000 Then Application.EnableEvents = False If Worksh

我有从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

正如评论中所述,我不太喜欢按照您建议的方式做事,但代码如下所示:

' 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
它很长,但那是因为我在每行代码中引用了几次
工作表(“测试表”)


希望这能奏效

Excel中有一个功能,您可以告诉它用递增的数字填充列,而不需要宏来完成。基本上,这个单元格比它上面的单元格多一个。当你删除一行时,它会自动更新,因为这只是一个计算。我希望它在我实际运行宏后自动更新。这样用户就不必手动操作@robertharvey这是一个编程网站,而不是办公网站。发布你的宏,这样我们就可以看一看。@RobertHarvey我不想发布宏,因为它与我的问题关系不大。我希望这是对我已经制作的宏的一个补充。我知道我可以手动执行此操作,但我提出的问题是为了让人们更容易使用。请在空白处插入代码。好。。。