我有一个遍历单元格以查看它们是否有#N/A
错误的函数。如果是这样,则另一列同一行中的单元格应显示为绿色。
我得到了错误Run-time error 13: Type Mismatch
。一旦到达包含文本的某些单元格,就会发生这种情况。到目前为止,我发现似乎只对超过256个字符的单元格抛出此错误。
我使用Excel作为64位Office 365订阅的一部分。
我试图忽略此错误,On Error GoTo [ErrorLabel]
只是继续进行下一个迭代。由于某种原因,此操作仅一次。一旦另一个单元格被检查超过256个字符,我就会再次遇到相同的错误。
编辑:可能与IsNA()
期望Variant
数据类型的功能有关。我猜想,由于单元格值对于字符串来说太大了,它根本不会存储在变量中,或者仅仅是与有所不同Variant
。
这是包含几个过程的更大模块的一部分。因此,它应该是程序化的。isError
并且CVErr
如评论中所建议,未能解决此问题。仍然得到Type Mismatch
。
产生错误的初始代码:
For i = 2 To rowCount
If WorksheetFunction.IsNA(Cells(i, 4)) _
Then Cells(i, 1).Interior.Color = RGB(0, 255, 0)
我试图解决此问题的代码。这仍然会引发错误(请参阅“到目前为止我尝试过的部分”):
For i = 2 To rowCount
On Error GoTo Error
'based on following condition
' 1. Name does not exist in previous weeks' sheet, identified by VLOOKUP being #N/A
If WorksheetFunction.IsNA(Cells(i, 4)) _
Then Cells(i, 1).Interior.Color = RGB(0, 255, 0)
Error:
Next i
用一列创建空白表,其中包含几行不同长度的文本。如下所示,至少一行应超过256个字符来进行测试。
在Sheet1下的VBA中插入以下代码:
Sub isText()
Dim i As Integer
For i = 2 To 6
If WorksheetFunction.isText(Cells(i, 1)) _
Then Debug.Print "Is Text" _
Else Debug.Print "Is Not A Text"
Next i
End Sub
在此示例中,错误在到达第6行时立即抛出。
多亏了评论者,问题才得以解决。
该错误的原因可能与WorksheetFunctions.isNA()
功能有关。根据此函数的文档,期望使用type参数Variant
。但是在我的excel版本(办公室365(16.0.12527.21096)64位)中,任何包含超过255个字符的字符串的单元格都将其内部存储为Array
数据类型。已使用=TYPE
Excel函数进行了检查。返回64
表示一个数组(document)。
代替使用的Cells(rowNum, colNum)
我用Cells(rowNum, colNum).Value
它返回一个Variant
数据类型,而不是一个Array
。这正是我需要的类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句