大型阵列的类型不匹配错误

时间:2013-05-31 04:04:18

标签: arrays excel-vba vba excel

我在第3行遇到类型不匹配的VBA错误,但如果数组像A3:A52那样短,则效果很好。是因为阵列大小有限吗?

Dim varry() As Variant
varry = [A2:A520000&G2:G520000]
UserForm1.Label1.Caption = Application.Match(CLng(DateValue("5/14/2013")) & "YUM", varry, 1) & " " & Timer - t
UserForm1.Show vbModeless
DoEvents
End Sub

2 个答案:

答案 0 :(得分:2)

传递Application.Match时,Array的限制。它将处理的最大大小数组是65536长。

如果您传递Range,它将处理更长的数据:例如

Dim r As Range
Set r = [A1:A520000]
result = Application.Match(YourSearchTerm, r, 1) 

我知道,鉴于您将两个范围连接到阵列中,不是一个完整的案例解决方案,但您可以设计一个解决方案来重构您需求的更广泛应用......

答案 1 :(得分:0)

我的解决方案是将表格中未使用的列中的单元格设置为等于感兴趣列的最大值,然后只搜索该有限范围:

Dim Max_date As Date
Dim daterange As Range
Set daterange = Range("t2:t2")
Max_date = Application.WorksheetFunction.Max(daterange)
MsgBox Max_date

其中,单元格t2 = max(感兴趣的列)

绕过数组长度限制。在我的情况下,我设置t2 = max(c2:c500000)