[英]Excel VBA need to remove all rows with the #REF! value
我有以下代码,该代码在L列中使用单词“ Record”查找值,然后将行复制到单独的工作表中。
我在值#REF的行上收到类型不匹配错误! 发生在L列中。
修改以下内容以完全删除这些行,然后继续执行预期功能的最佳方法是什么?
NB LastRow是'Long'变量类型
Sheets("Demand").Rows("1").Copy Sheets("Data").Range("A1")
With Sheets("Demand")
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
pasteRowIndex = 2
For r = 1 To LastRow
If LCase(.Cells(r, "L").Value) Like LCase("Record*") Then
If UBound(Split(.Cells(r, "L"), ",")) > 0 Then
i = i + 1
ReDim v(1 To i)
v(i) = pasteRowIndex
End If
Sheets("Demand").Rows(r).Copy Sheets("Data").Rows(pasteRowIndex)
pasteRowIndex = pasteRowIndex + 1
End If
Next r
End With
首先,您需要从最后一行迭代到第一行:
For r = LastRow to 1 step -1
'Next, add if statement inside the loop checking if cell returns error:
If IsError(.Cells(r, "L").Value) then
'if so, delete this row:
.Cells(r, "L").entirerow.delete
'..... the rest of your code as ElseIf part of conditional statement
ElseIf LCase(.Cells(r, "L").Value) Like LCase("Record*") Then
If UBound(Split(.Cells(r, "L"), ",")) > 0 Then
i = i + 1
ReDim v(1 To i)
v(i) = pasteRowIndex
End If
Sheets("Demand").Rows(r).Copy Sheets("Data").Rows(pasteRowIndex)
pasteRowIndex = pasteRowIndex + 1
End If
Next r
像这样...
For r = 1 To LastRow
If Not IsError(.Cells(r, "L").Value) Then
If LCase(.Cells(r, "L").Value) Like "record*" Then
If UBound(Split(.Cells(r, "L"), ",")) > 0 Then
i = i + 1
ReDim v(1 To i)
v(i) = pasteRowIndex
End If
Sheets("Demand").Rows(r).Copy Sheets("Data").Rows(pasteRowIndex)
pasteRowIndex = pasteRowIndex + 1
End If
End If
Next r
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.