Excel VBA:删除两个电子表格中的整行

时间:2014-08-20 19:42:15

标签: excel vba excel-vba

这两个电子表格基本上是彼此的副本,除了一个电子表格最后有一些额外的信息列。每行包含一个产品的信息列,因此具有一致性非常重要。我正在使用工作表更改宏,并且我制定了一个特定的规范,以便在我删除整个行时不会运行:

If Target.Cells.Count > 1000 Then Exit Sub

所以我在If语句之后尝试了这个并将Exit Sub移到此行的末尾以删除其他电子表格中的行(Operational SKU List):

Worksheets("Operational SKU List").Cells(Target.EntireRow, Target.Column).Delete

我尝试了一些这方面的变化,但我总是遇到问题。我认为这可能与行已被删除的事实有关,所以我无法访问“目标”信息,但我不确定还有什么可以使用。最终目标是当我在电子表格中删除包含工作表更改宏的行时,将在另一个电子表格中自动删除相同的行。我之所以需要这个,是因为当我删除第一个电子表格中的一行,然后将新信息上传到第二个电子表格时,我的数据将不再对齐,因为右边的额外列不会在另一个电子表格中生效。如果我同时删除了这两行,我将不会遇到这个问题

感谢。

1 个答案:

答案 0 :(得分:1)

尝试一下 - 将下面的代码放在第一个工作表代码模块中,并将工作表参数调整到第二个工作表中的注释

第一个工作表是删除行的位置 - 第二个工作表是您要删除要从第一个工作表镜像的行的位置

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim deletedRowsAddress As String
    Dim deletedRow

    If Target.Address = Target.EntireRow.Address Then

        For Each deletedRow In Target.Rows
            deletedRowsAddress = deletedRowsAddress & "," & deletedRow.row & ":" & deletedRow.row
        Next
        deletedRowsAddress = Right(deletedRowsAddress, Len(deletedRowsAddress) - 1)

        'CHANGE WORKSHEET ARGUEMENT TO YOUR 2d SHEET NAME
        Worksheets("2d sheet").Range(deletedRowsAddress).Delete

    End If

End Sub