昨天我寻求帮助:
昨天的帖子(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
答案 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