Excel 是否将IF语句与#N/A一起使用?

Excel 是否将IF语句与#N/A一起使用?,excel,vba,if-statement,Excel,Vba,If Statement,当前有一个宏,其中包含许多If语句,这些语句遍历每一行并测试特定条件。需要添加到每个if语句中的一个条件是:if c1(我将其作为一个范围)=“#N/a”)。在询问了一些人之后,我最终得到了要在每个if语句之前添加的正确代码行,这是另一个条件: If CVErr(cl.Value) = CVErr(xlErrNA) And 不幸的是,当cl.值不是“#N/A”时,这会一直搞砸。我想知道是否有一种方法可以启动宏,比如Do While,或者通过测试cl.Value是否为“#N/a”,以及是否

当前有一个宏,其中包含许多If语句,这些语句遍历每一行并测试特定条件。需要添加到每个if语句中的一个条件是:if c1(我将其作为一个范围)=“#N/a”)。在询问了一些人之后,我最终得到了要在每个if语句之前添加的正确代码行,这是另一个条件:

  If CVErr(cl.Value) = CVErr(xlErrNA) And 
不幸的是,当cl.值不是“#N/A”时,这会一直搞砸。我想知道是否有一种方法可以启动宏,比如Do While,或者通过测试cl.Value是否为“#N/a”,以及是否通过所有其他if语句启动宏,如果不是,则转到下一个单元格。请告知。谢谢你的帮助

这里只是一个简单的例子/看一下4个If语句,我在上面添加了一行,用于测试导致错误的“#N/a”(表示13:类型不匹配)

#N/A
是工作表中的特殊错误值,而不是字符串

您可以使用以下方法进行测试:

If WorksheetFunction.Iserror(cl.Offset(0, 0).Value) ...
对于任何错误,它都将返回TRUE。如果要专门测试
#N/A
,请对函数ISNA(…)执行相同的操作

关于你修改的问题,如果我理解正确,为什么不能将你的其他国际单项体育联合会附在北美国际单项体育联合会中

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应为等号。我在我的手机上写这封信,手机没有那个键:(

可以这样做
如果CVErr(cl.Value)=CVErr(xlErrNA),那么
没有明显的区别。嘿,谢谢你的帮助。我试着在每个If语句之前添加这个,并意识到当cl.Value不是“\N/A”时它就不起作用了.我想看看是否有一种方法可以启动宏,比如Do While,或者通过测试cl.Value是否为“#N/a”来启动宏如果是,则检查所有其他if语句,如果不是,则转到下一个单元格。请给出建议。谢谢您的帮助。编辑OP以包含新问题。@Anilula,我认为最简单的方法是保留
for
循环,然后用测试错误条件的
if
语句开始循环。如果它发现了错误,那么继续做你正在用
IFs
做的事情;如果包含
的IFs
没有发现错误,那么它会把你带到
下一个
,循环会在下一个单元格中再次启动。几天前,我在我的回答中添加了这个想法的草图——正如我所说的那样,再具体不过了自从我的网络断了,我就在电话上记下了!
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