我有这段代码
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