与VBAmacros中的Application.Matchtypes不匹配错误

我正尝试使用Application.Match从电子表格中删除一系列行,然后使用剩余的行编辑现有的电子表格。 这里是我使用的代码,这给我一个types不匹配的错误。 我以前使用过类似的小数据集逻辑,没有问题:

If IsError(Application.Match(Fund_Inv_Cusip_Change(LineNumber), Fund_Inv_Cusips_to_Edit, 0)) Then If DeletionRange Is Nothing Then Set DeletionRange = Cells(Override_Workbook_Line + 3, 1).EntireRow Else Set DeletionRange = Union(DeletionRange, Cells(Override_Workbook_Line + 3, 1).EntireRow) End If End If Next LineNumber DeletionRange.Delete Shift:=xlUp Set DeletionRange = Nothing 

Fund_Inv_Cusips_to_Edit被声明为一个包含66,124个条目的数组,声明为一个string。 FUnd_Inv_Cusip_Change是一个包含3329个条目的数组,声明为一个string。 在立即窗口中使用print(typename(fund_inv_cusips_to_edit())为每个数组返回String(),所以我不确定为什么这是一个types不匹配。

任何帮助将非常感激。 我已经阅读了这个委员会和其他人的很多post,没有看到直接解决这个问题的东西。 谢谢!

Application.Match只能在第二个参数中使用65,536个元素数组。 在即时窗口中

 ?application.match(1,range("A1:A65536").Value,false) 

没有错误

 ?application.match(1,range("A1:A65537").Value,false) 

types不匹配错误。

你可以循环。 这不是很有效率,但可能比你想象的要快。 或者你可以把它放在一个断开连接的logging集中,但是加载起来可能比循环更长。