繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM