Vba 映射值后删除整行

Vba 映射值后删除整行,vba,excel,delete-row,Vba,Excel,Delete Row,我希望在值从此工作表映射到另一工作表后删除每一行。下面是我当前的代码。如果行不是空的(Slave.Cells(i,3)),则EntireRow.Delete(这不起作用)是理想的行删除位置,这样在映射之后,行会立即被删除,代码会继续 然而,我似乎无法让这个工作。它运行在相当大的一组数据上,因此它需要简单但有效 有没有关于我如何做到这一点或者使用包含简单代码的模块的想法 Private Sub CommandButton21_Click() Dim Master As Worksheet 'de

我希望在值从此工作表映射到另一工作表后删除每一行。下面是我当前的代码。如果行
不是空的(Slave.Cells(i,3)),则EntireRow.Delete
(这不起作用)是理想的行删除位置,这样在映射之后,行会立即被删除,代码会继续

然而,我似乎无法让这个工作。它运行在相当大的一组数据上,因此它需要简单但有效

有没有关于我如何做到这一点或者使用包含简单代码的模块的想法

Private Sub CommandButton21_Click()

Dim Master As Worksheet 'declare both
Dim Slave As Worksheet

Application.ScreenUpdating = False

Set Master = ThisWorkbook.Worksheets("Unallocated")
Set Slave = ThisWorkbook.Worksheets("Convertor")


For j = 1 To 5000 '(the master sheet)

For i = 1 To 5000 '(the slave sheet) 'for first 1000 cells
    If Trim(Master.Cells(j, 3).Value2) = vbNullString Then Exit For 'if ID cell is blank exit
    If Master.Cells(j, 3).Value = Slave.Cells(i, 1).Value Then
    If IsEmpty(Slave.Cells(i, 3)) Then Exit Sub
        Master.Cells(j, 2).Value = Slave.Cells(i, 3).Value
        Master.Cells(j, 8).Value = Slave.Cells(i, 4).Value
        Master.Cells(j, 9).Value = Slave.Cells(i, 5).Value
        Master.Cells(j, 10).Value = Slave.Cells(i, 6).Value
        Master.Cells(j, 11).Value = Slave.Cells(i, 7).Value
        Master.Cells(j, 12).Value = Slave.Cells(i, 8).Value
        Master.Cells(j, 13).Value = Slave.Cells(i, 9).Value
        Master.Cells(j, 23).Value = Slave.Cells(i, 11).Value
        Master.Cells(j, 24).Value = Slave.Cells(i, 12).Value
        Master.Cells(j, 25).Value = Slave.Cells(i, 13).Value
        Master.Cells(j, 26).Value = Slave.Cells(i, 14).Value
        Master.Cells(j, 27).Value = Slave.Cells(i, 15).Value
        Master.Cells(j, 28).Value = Slave.Cells(i, 16).Value
        If Not IsEmpty(Slave.Cells(i, 3)) Then EntireRow.Delete

    End If
    Next


    Next

Application.ScreenUpdating = True

End Sub

它应该是这样工作的:

If Not IsEmpty(Slave.Cells(i, 3)) Then Slave.Cells(i, 3).EntireRow.Delete