运行时错误删除循环

任何想法,为什么我得到运行时错误types不匹配的代码下面? if语句似乎有问题。

运行时错误是types不匹配

Dim rng As Range Dim cell_search As Range Dim del As Range Dim FrRngCount As Range Dim I As Integer Dim DatatoData As Worksheet Set DatatoData = ThisWorkbook.Worksheets("PCA DATA2") Set FrRngCount = DatatoData.Range("A:A") I = Application.WorksheetFunction.CountA(FrRngCount) Set rng = Intersect(DatatoData.Range("CV2:CV" & I), DatatoData.UsedRange) For Each cell_search In rng If (cell_search.Value) = "Not in Range" Then If del Is Nothing Then Set del = cell_search Else: Set del = Union(del, cell_search) End If End If Next cell_search On Error Resume Next del.EntireRow.Delete 

谢谢你的帮助。 皮特

rng被设置为Nothing? 尝试这个:

 Option Explicit Sub Test() Dim rng As Range Dim cell_search As Range Dim del As Range Dim FrRngCount As Range Dim I As Integer Dim DatatoData As Worksheet Set DatatoData = ThisWorkbook.Worksheets("PCA DATA2") Set FrRngCount = DatatoData.Range("A:A") I = Application.WorksheetFunction.CountA(FrRngCount) Set rng = Intersect(DatatoData.Range("CV2:CV" & I), DatatoData.UsedRange) If Not rng Is Nothing Then For Each cell_search In rng cell_search.Activate If cell_search.Value = "Not in Range" Then If del Is Nothing Then Set del = cell_search Else: Set del = Union(del, cell_search) End If End If Next cell_search End If On Error Resume Next del.EntireRow.Delete End Sub 

这是我的,它似乎工作。 我添加了cell_search.Active进行debugging。 你应该尝试一下,看看你发生错误时激活的单元格。

根据您的上述评论(发生错误的地方),似乎无法确定该单元的.Value值。 当公式在产生错误的单元格中(例如#Ref! #DIV/0!#NAME?#Ref! )时,就是这种情况。

所以,我build议你在评估之前首先testing单元格的值。

 For Each cell_search In Rng If IsError(cell_search.Value) Then 'What should happen in this case? Else If (cell_search.Value) = "Not in Range" Then If del Is Nothing Then Set del = cell_search Else: Set del = Union(del, cell_search) End If End If End If Next cell_search 

请让我知道如果这解决了你的问题。