我有这段代码

    With Data.Cells(rowMatch, GWECol)
        .Value = Cmp.Cells(i, GWENetPr)
        .AddComment
        .Comment.Text Text:=UCase(Environ("UserName")) & ":" & vbNewLine _
            & "Comment: " & Cmp.Cells(i, CommCol) & vbNewLine _
            & "Transaction: " & Cmp.Cells(i, QRTran) & vbNewLine _
            & "QR Pr: " & Cmp.Cells(i, QRPr) & vbNewLine _
            & "QR WD: " & Cmp.Cells(i, QRWD) & vbNewLine _
            & "QR WD All: " & Cmp.Cells(i, QRWDA) & vbNewLine _
            & "QR XPr: " & Cmp.Cells(i, QRXPr) & vbNewLine _
            & "QR XAll: " & Cmp.Cells(i, QRXAll) & vbNewLine _
            & "GWE Pr: " & Cmp.Cells(i, GWEPr) & vbNewLine _
            & "GWE All: " & Cmp.Cells(i, GWEAll) & vbNewLine _
            & "GWE XPr: " & Cmp.Cells(i, GWEXPr) & vbNewLine _
            & "GWE XAll: " & Cmp.Cells(i, GWEXAll)
        .Comment.Shape.TextFrame.AutoSize = True
    End With


Cmp.Cells(i,X)是指可能具有#N / A错误(失败的VLOOKUP)的单元格。

是否可以将代码仅以#N / A作为字符串或将其保留为空?现在,只要引用的单元格之一为#N / A,该块就会失败,并且根本不会添加任何注释文本。

谢谢!

最佳答案

您正在使用单元格的默认属性,

Debug.Print Cmp.Cells(i, QRXAll)

例如,这始终引用单元格的.Value属性。 .Value实际上是错误类型,Error 2042我认为您可以通过检查来避免

CLng(Cmp.Cells(i,QRXA11))

但这将导致2042而不是#N/A文本。

如果要获取字符串#N/A:请尝试使用依赖于单元格的Cmp.Cells(i, QRXAll).Text属性而不是其.Text.Value

Debug.Print Cmp.Cells(i, QRXAll).Text

10-05 21:19
查看更多