[英]Excel VBA need to remove all rows with the #REF! value
I have the following code that looks for values with the word "Record" in column L and then copies the row to a separate sheet. 我有以下代码,该代码在L列中使用单词“ Record”查找值,然后将行复制到单独的工作表中。
I am getting a type-mismatch error on rows where the value #REF! 我在值#REF的行上收到类型不匹配错误! occurs in column L.
发生在L列中。
What is the best way to amend the following in order to completely delete those rows and then continue the intended function? 修改以下内容以完全删除这些行,然后继续执行预期功能的最佳方法是什么?
NB LastRow is of 'Long' variable type 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
First, you need to iterate from last to first row: 首先,您需要从最后一行迭代到第一行:
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
Like this... 像这样...
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.