#N / A的Excel VBA类型不匹配

csg*_*csg 2 excel vba excel-vba

我有这段代码

    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
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Dav*_*ens 5

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

Debug.Print Cmp.Cells(i, QRXAll)

例如,这总是引用cell .Value属性。该.Value实际上是一个错误类型,Error 2042我想你可以通过检查避免

CLng(Cmp.Cells(i,QRXA11))

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

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

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