目前有一个宏,其中有很多if语句遍历每一行并测试某些条件。需要添加到每个if语句的条件之一如下:如果c1(我将Dim'd作为范围)=“#N / A”)。在询问了几个人之后,我终于在我的每个if语句之前添加了正确的代码行作为另一个条件:
If CVErr(cl.Value) = CVErr(xlErrNA) And
不幸的是,当cl.Value不是“#N / A”时,这种情况一直在搞乱。我想看看是否有办法可以启动宏,例如Do While或通过测试来查看cl.Value是否为“#N / A”以及是否通过所有其他IF声明,如果没有去下一个单元格。请指教。谢谢你的帮助。
这里只是一个简单的例子/偷看4 If语句我添加了上面的行来测试“#N / A”,这会引起错误(说13:类型不匹配)。
For Each cl In range("A2", range("A" & Rows.count).End(xlUp))
If CVErr(cl.Value) = CVErr(xlErrNA) And _
cl.Offset(, 11).Value = "Bond Deals" And cl.Offset(, 2).Value Like "*CLO*" Then
cl.Value = "CLO"
End If
If CVErr(cl.Value) = CVErr(xlErrNA) And cl.Offset(, 11).Value = "Bond Deals" And cl.Offset(, 12).Value Like "BCC*" Then
c1.Value = "CLO"
End If
If CVErr(cl.Value) = CVErr(xlErrNA) And _
cl.Offset(, 11).Value = "Bond Deals" And cl.Offset(, 14).Value Like "*CLO*" Then
c1.Value = "CLO"
End If
If CVErr(cl.Value) = CVErr(xlErrNA) And _
cl.Offset(, 11).Value = "Bond Deals" And cl.Offset(, 15).Value Like "*CLO*" Then
c1.Value = "CLO"
End If
答案 0 :(得分:1)
#N/A
是工作表中的特殊错误值,而不是字符串。
您可以使用以下方法对其进行测试:
If WorksheetFunction.Iserror(cl.Offset(0, 0).Value) ...
对于任何错误,它将返回TRUE。如果您想专门针对#N/A
进行测试,请使用ISNA(...)函数执行相同的操作。
关于您修改过的问题,如果我理解正确,为什么不能将您的其他IF包含在NA IF中?
For ...
If (CVErr(cl..Value) eq CVErr(xlErrNA) Then
If .... Then
do_something
End If
If .... Then
do_another_thing
End If
End If
Next
请注意,代码草图第二行的 eq 应为等号。我在手机上写了这个,没有那把钥匙:(