我有A栏:

+--+--------+
|  |  A     |
+--+--------+
| 1|123456  |
|--+--------+
| 2|Order_No|
|--+--------+
| 3|    7   |
+--+--------+


现在,如果我输入:

=Match(7,A1:A5,0)


进入工作表中的单元格

3


结果是。 (这是需要的)

但是当我输入这一行时:

Dim CurrentShipment As Integer
CurrentShipment = 7
CurrentRow = Application.Match(CurrentShipment, Range("A1:A5"), 0)


CurrentRow的值为“错误2042”

我的第一个直觉是确保值7实际上在范围内,并且确实在范围内。

我的下一个可能是Match函数需要一个字符串,所以我尝试了

Dim CurrentShipment As Integer
CurrentShipment = 7
CurrentRow = Application.Match(Cstr(CurrentShipment), Range("A1:A5"), 0)


无济于事。

最佳答案

请参见VBA Cell Error Values的列表:


Constant    Error number  Cell error value
xlErrDiv0   2007          #DIV/0!
xlErrNA     2042          #N/A
xlErrName   2029          #NAME?
xlErrNull   2000          #NULL!
xlErrNum    2036          #NUM!
xlErrRef    2023          #REF!
xlErrValue  2015          #VALUE!



尝试将CurrentShipment的值从Integer转换为Long而不是String

CurrentRow = Application.Match(CLng(CurrentShipment), Range("A1:A5"), 0)

10-05 21:26