【问题标题】:Include #N/A value in IF syntax VBA [duplicate]在 IF 语法 VBA 中包含 #N/A 值 [重复]
【发布时间】:2019-04-01 08:22:28
【问题描述】:

我在代码中包含单元格中的 #N/A 值时遇到问题。在我的工作表中,我想消除单元格的内容是其值为 0 或 #N/A,但我不知道为 #N/A 编写 VBA 代码。

这是适用于我的代码,但在遇到 #N/A 单元格时仍然会出错。

For Each value In Sheets("Comments").Range("C2:Y600")
    If value = 0 Or value = "#N/A" Then
        value = " "
    End If
Next

【问题讨论】:

    标签: excel vba if-statement syntax


    【解决方案1】:

    如果单元格IsNA而不是测试值测试

    Dim c As Range
    Dim DefaultValue As String
    
    DefaultValue = " "
    
    For Each c In Sheets("Comments").Range("C2:Y600")
        If Application.IsNA(c) Then
            c.Value2 = DefaultValue
        Else
            If c.Value2 = 0 Then
                c.Value2 = DefaultValue
            End If
        End If
    Next
    

    【讨论】:

    • 在遇到 N/A 时仍然会出现类型不匹配错误
    • 尝试使用除value 以外的变量名,因为这是保留关键字。另外,你是如何声明你的变量的?
    • @AncaVulc 您不能同时测试两个 if,因为如果它包含 NA,那么对 c.Value2 = 0 的测试将失败。您需要 2 If 第一次测试 Application.IsNA(c) 和第二次测试 c.Value2 = 0 但这一切都在您的问题上方的链接中进行了解释(这是您的问题的副本并且已经解决)。
    • @Pᴇʜ 干杯 - 认为我需要更多早晨咖啡
    • @AncaVulc 实际上这是一个新问题,与您的原始问题无关,如果您的代码运行没有显示错误,最好在codereview.stackexchange.com 询问。
    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 2012-07-16
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2012-07-18
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多