0

我在第 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
4

2 回答 2

2

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

如果您通过 a Range,它将处理更长的数据:例如

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

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

于 2013-05-31T05:49:56.233 回答
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)

于 2018-04-30T13:23:36.070 回答