Excel VBA需要使用#REF删除所有行! 值

我有以下代码,在L列中查找单词“Record”的值,然后将该行复制到单独的工作表。

我得到一个types不匹配的错误行的值#REF! 发生在列L中。

为了完全删除这些行然后继续所需的function,修改以下内容的最佳方法是什么?

NB LastRow是“长”variablestypes

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