VBA匹配function不适用于大数字

我做了一个自定义types,我称之为Run,其中一个值为RunMOA。 它存储一个string,它总是一个12位数字。 我有一系列这些运行,每个都有不同的MOA。 我也有一张有所有可能的MOA列的工作表,我试图循环遍历运行数组,并获得该Run的相应MOA的行号(用于查找该工作表中的其他数据)。

奇怪的是,这是工作一堆的MOAs,但不是特定的。 我做了一些玩耍,几乎似乎是由四舍五入或其他原因造成的错误。 例如,这些MOA正在列中find:

200630031111,200630021593,200630021593,

但这些不是:

200000000443,200000000603,200000000444。

以下是循环访问值的代码(NumRuns是Runs数组的长度):

Dim i As Integer For i = 0 To NumRuns - 1 GetRun i, n, Schedule, SKUs Next i 

这是应该将行号存储在一个variables中的行:

 Row = Application.WorksheetFunction.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1))) - 1 

数字太大时,这个function是否有问题? 当连续出现很多零时,这只会给我带来麻烦,我找不到解释。 我检查了一下,并仔细检查了这些MOA在列中,所以这不是他们错过的问题。

您目前正在使用MATCH函数的近似匹配项,并且必须按照升序对数据进行sorting,以使用默认的match_type值1.使用与匹配types为0的完全匹配。

 Row = Application.WorksheetFunction.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1)), 0) - 1 

顺便说一句,这将是更好的,

 dim rw as variant rw = Application.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1)), 0) if not IsError(rw) then rw = rw - 1 'more operational code here else ' match failed - deal with error end if