使用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
属性可以标记错误的单元格。
对不起,我没有足够的声望来添加评论。