VBA 2042类型不匹配 - #N / A - 阵列

时间:2017-02-13 15:50:39

标签: excel vba excel-vba type-mismatch

我在创建一个包含大量数据的数组时遇到问题,然后将数据合并到一个文件中。在从文件中读取信息,然后将它们放入另一个合并文件时,它所在的循环会发现2042错误。我在Add Watch中发现它想要返回#N / A,因为原始文件中的函数不返回任何内容。我怎样才能避免我的宏停止?我已经找到了跳过此记录的方法,但由于处理这些记录的经验不足,我无法将其插入到当前循环中。它停在这里"如果aOutput(1,outputCol)= aDataFromPivotFiltered(1,filteredCol)那么"请参阅下面的一小部分宏。

For outputCol = 1 To UBound(aOutput, 2)
    For filteredCol = 1 To UBound(aDataFromPivotFiltered, 2) 
        If aOutput(1, outputCol) = aDataFromPivotFiltered(1, filteredCol) Then 
            For filteredRow = 2 To UBound(aDataFromPivotFiltered, 1) 
                aOutput(filteredRow, outputCol) = aDataFromPivotFiltered(filteredRow, filteredCol)
            Next filteredRow
            Exit For
        End If
    Next filteredCol
Next outputCol

我找到了下面的内容,没关系,但它应用了另一个宏。

 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

有没有人可以帮我这个?它不断引起头痛,无论我在这个主题中阅读了多少文章。想不通。

1 个答案:

答案 0 :(得分:0)

首先测试错误,如下所示:

If Not IsError(aDataFromPivotFiltered(1, filteredCol) And Not IsError(aOutput(1, outputCol)) Then 
    If aOutput(1, outputCol) = aDataFromPivotFiltered(1, filteredCol) Then 
        For filteredRow = 2 To UBound(aDataFromPivotFiltered, 1) 
            aOutput(filteredRow, outputCol) = aDataFromPivotFiltered(filteredRow, filteredCol)
        Next filteredRow
        Exit For
    End If
End If

这样,将跳过传递给数组的任何公式错误。