使用InsTr运行时错误13(2042)VBA查找#N / A

我等待,并再次思考,我search,我试图分配searchstring的variables,尝试“variant”variables,试图改变search开始位置….不工作。

我需要遍历一个列范围,并find#N / A来提醒用户有什么不对(有一个Msgbox)。 实际值是“#N / A”,因为我正在复制粘贴所得到的公式值。

如果我发现并用“#”replace“#N / A”作为练习,它会使用单磅符号作为要search的项目(如:

If InStr(1, Weightval.Value, "#") > 0 Then 

但是不这样工作:

 Dim LastRowNum As Long Dim Weightval As Range Dim SearchRange As Range Set SearchRange = Range("W2:" & "W" & LastRowNum) For Each Weightval In SearchRange If InStr(1, Weightval.Value, "#N/A") > 0 Then MsgBox ("One or more weight value(s) is missing.") Exit Sub End If Next Weightval 

仅供参考显然,在子版本中还有一些其他的代码,我只是采取在这里不工作的部分。

我只是知道这将是简单的事情,我讨厌这些情况,因为我没有足够的经验,自己弄清楚。 如果有人想给我一个很好的CLUE,我可以试着自己弄清楚。

使用.Text而不是.Value

 Sub fjdsrjsgf() Dim LastRowNum As Long Dim Weightval As Range Dim SearchRange As Range LastRowNum = 19 Set SearchRange = Range("W2:" & "W" & LastRowNum) For Each Weightval In SearchRange If InStr(1, Weightval.Text, "#N/A") > 0 Then MsgBox ("One or more weight value(s) is missing.") Exit Sub End If Next Weightval End Sub 

在这里输入图像说明

编辑#1:

如果仔细检查我的照片,您会看到我使用公式=VLOOKUP(0,0,0)创build了=VLOOKUP(0,0,0) #N/A (如公式栏中所示) 。 这会产生一个真正的错误。 如果我刚input:

 '#N/A 

在单元格,然后.Value会工作!

(Excel VBA可以区分真正的错误和模仿错误的文本string…………….。值和真正的错误不会混合)

我认为更好的方法是使用变体和IsError(和/或CVErr如果你想检查一个特定的错误)。 更好的原因是使用.Text非常慢并且容易出错。 (请参阅我的关于.Text与.Value与.Value2的文章)

 Option Explicit Sub FindError() Dim j As Long Dim LastRowNum As Long Dim Weightval As Variant LastRowNum = 21 Weightval = Range("W2:" & "W" & LastRowNum) For j = LBound(Weightval) To UBound(Weightval) ' ' use IsError() to determine if a variant contains an error ' If IsError(Weightval(j, 1)) Then ' ' use cverr to check for a particular error ' If Weightval(j, 1) = CVErr(xlErrNA) Then MsgBox ("One or more weight value(s) is #N/A at row " & j + 1) Exit Sub End If End If Next j End Sub 

使用IsError()不能在文本中search#N / A

  Dim LastRowNum As Long Dim Weightval As Range Dim SearchRange As Range Set SearchRange = Range("W2:" & "W" & LastRowNum) For Each Weightval In SearchRange 'If InStr(1, Weightval.Value, "#N/A") > 0 Then If IsError(Weightval.Value) Then MsgBox ("One or more weight value(s) is missing.") Exit Sub End If Next Weightval 

那么,Excel是否会将单元格的值标记为错误,

range.specialcells属性可以标记错误的单元格。

对不起,我没有足够的声望来添加评论。