VBA 代码显示错误 2042 原因不确定

Posted

技术标签:

【中文标题】VBA 代码显示错误 2042 原因不确定【英文标题】:VBA code showing error 2042 for reason unsure 【发布时间】:2012-12-07 10:49:20 【问题描述】:

我有一个变量 fila,其中包含 Excel 值的整行

问题是当在 Excel 中我有 #N/A 时,VBA 会像 Error 2042 一样采用该值。

我无法将该值分配给valor 并且会产生错误。到目前为止一切正常,现在我正在尝试定义一个 On Error Goto 以进入 For 循环中的下一个迭代,但我确实 知道为什么 VBA 不处理错误.

Do While Not IsEmpty(ActiveCell)

    txt = ActiveCell.Value2
    cell = ActiveCell.Offset(0, 1).Value2       
    fila = Range("C20:F20")

    For j = 1 To UBound(fila, 2)
        On Error GoTo Siguiente
        If Not IsEmpty(fila(1, j)) Then            
            valor = fila(1, j)
            cmd = Cells(1, j + 2).Value2
            devolver = function1(cmd, txt, cell, valor)
            arrayDevolver(p) = devolver
            p = p + 1                
        End If
Siguiente:
    Next
Loop 

【问题讨论】:

为什么使用Value2? (没听说过) 它比 Value 更有效,因为 value 检查值是数据还是货币类型msdn.microsoft.com/en-us/library/office/… 【参考方案1】:

这不是 VBA 错误 - 因此错误处理不会捕获它。要检测此问题,请在写入数组之前使用IsError

下面的简单代码处理了这个测试的Error 2042问题

Sub Test()
    Dim varIn As Variant
    [a1].FormulaR1C1 = "=NA()"
    If IsError([a1].Value2) Then
        varIn = "skip record"
    Else
        varIn = [a1].Value2
    End If
End Sub

【讨论】:

嘿谢谢它解决了我的问题我不知道“错误 2042”它是一种不同的错误。

以上是关于VBA 代码显示错误 2042 原因不确定的主要内容,如果未能解决你的问题,请参考以下文章

VBA 公共变量

在大型 VBA/MS Access 项目中查找语法错误

切换到 64 位 Excel 后如何修复 VBA“类型不匹配”错误

VBA Excel - 自动填充方法超出范围类错误

如何在我的 VBA 代码中解决这个“下标超出范围错误”?

vba 拆分功能的类型错误和不匹配