VBA 2042 类型不匹配 - #N/A - 数组
VBA 2042 Type mismatch - #N/A - Array
我在创建一个包含大量数据的数组时会遇到问题,然后将这些数据合并到一个文件中。在从文件中读取信息,然后将它们放入另一个合并文件的过程中,它所在的循环发现 2042 错误。我在 Add Watch 中发现它想要返回 #N/A 因为原始文件中的函数没有 returns 任何东西。我怎样才能避免我的宏停止?我找到了跳过这条记录的方法,但由于处理这些的经验不足,我无法将它插入到我当前的循环中。它停在这里 "If aOutput(1, outputCol) = aDataFromPivotFiltered(1, filteredCol) Then" 请参阅下面的一小部分宏。
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
有没有人可以帮我解决这个问题?无论我阅读了多少篇关于该主题的文章,它都会让人头疼。想不通。
首先测试错误,如下所示:
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
这样,传递到数组中的任何公式错误都将被跳过。
我在创建一个包含大量数据的数组时会遇到问题,然后将这些数据合并到一个文件中。在从文件中读取信息,然后将它们放入另一个合并文件的过程中,它所在的循环发现 2042 错误。我在 Add Watch 中发现它想要返回 #N/A 因为原始文件中的函数没有 returns 任何东西。我怎样才能避免我的宏停止?我找到了跳过这条记录的方法,但由于处理这些的经验不足,我无法将它插入到我当前的循环中。它停在这里 "If aOutput(1, outputCol) = aDataFromPivotFiltered(1, filteredCol) Then" 请参阅下面的一小部分宏。
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
有没有人可以帮我解决这个问题?无论我阅读了多少篇关于该主题的文章,它都会让人头疼。想不通。
首先测试错误,如下所示:
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
这样,传递到数组中的任何公式错误都将被跳过。