VBA - 从另一个工作簿中删除一行?

时间:2012-04-20 10:40:45

标签: vba excel-vba excel-2010 excel

昨天我寻求帮助:

  1. 从创建新工作簿的VBA宏中,工作簿“B”
  2. 将一行数据从工作簿'A'复制到工作簿'B'
  3. 在关闭之前以适当的格式保存工作簿'B'
  4. 昨天的帖子(VBA - How to copy row in Excel from one workbook to another?)为我的问题提供了可靠的解决方案。

    从那以后,我的代码进一步发展,并对它有了新的要求。我现在需要有一段代码,它将删除工作簿'B'中的复制行,具体取决于工作簿'A'sheet1的单元格Ai中的值是否与工作簿'B'sheet1的单元格Ai中的值相匹配(i是变量的整数变量)。这段代码在复制到行中的代码段之后运行很多,并且主行已经用新信息更新了,因此为什么这看起来有点落后。

    我在下面的内容应该让你知道我拥有的东西:

    ...
    Do Until IsEmpty(newBk.Sheets("Bad Records").Range("A" & extFileRowCount))
         If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _
            mainBk.Range("W" & sdRow).Value Then
            'then delete the row and reinsert
            '***** Stuck here. How do I remove the row? *****'    
             newBk.Sheets("Bad Records").Range _
                ("A" & extFileRowCount).remove '???
                newRowCount = newRowCount + 1
                mainBk.Rows(sdRow).Copy newBk.Sheets _                
                     ("Bad Records").Rows(newRowCount)
          Else
               extFileRowCount = extFileRowCount + 1
          Loop
    ...
    

    我认为我的算法是正确的,但我仍然坚持如何删除行。任何帮助将不胜感激。

    QF

1 个答案:

答案 0 :(得分:1)

我不太清楚为什么你在循环中有这一行

mainBk.Rows(sdRow).Copy newBk.Sheets _                
("Bad Records").Rows(newRowCount)

但要删除行,您可以使用此代码( UNTESTED

Sub Sample()
    Dim i As Long
    Dim Delrange As Range

    Application.ScreenUpdating = False

    '
    '~~> Rest of the code
    '

    For i = extFileRowCount To 1 Step -1
        If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _
           mainBk.Range("W" & sdRow).Value Then

            If Delrange Is Nothing Then
                Set Delrange = newBk.Sheets("Bad Records").Rows(i)
            Else
                Set Delrange = Union(Delrange, newBk.Sheets("Bad Records").Rows(i))
            End If
        End If
    Next i

    If Not Delrange Is Nothing Then Delrange.Delete

    '
    '~~> Rest of the code
    '

    Application.ScreenUpdating = True
End Sub

HTH