0

WorksheetFunction.Match在临时工作簿中使用。

Dimen = WorksheetFunction.Match(sum.Range("A15"), temp.Sheets(1).Range("A1:A200"))
colNum = WorksheetFunction.Match(sum.Range("A15"), temp.Sheets(1).Range("32:32"))

Dimen1 = WorksheetFunction.Match(sum.Range("A16"), temp.Sheets(1).Range("A1:A200"))
colNum1 = WorksheetFunction.Match(sum.Range("A16"), temp.Sheets(1).Range("33:33"))

Dimen2 = WorksheetFunction.Match(sum.Range("A17"), temp.Sheets(1).Range("A1:A200"))
colNum2 = WorksheetFunction.Match(sum.Range("A17"), temp.Sheets(1).Range("34:34"))

Dimen3 = WorksheetFunction.Match(sum.Range("A18"), temp.Sheets(1).Range("A1:A200"))
 colNum3 = WorksheetFunction.Match(sum.Range("A18"), temp.Sheets(1).Range("35:35"))

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:200"))
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("36:36"))

最后两行:

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:200")) 
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("36:36"))

它提出了1004错误,我不知道该错误的原因以及如何解决?

4

3 回答 3

1

尝试

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:A200")) 
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A36").EntireRow)

并可能在所有行中更改它。我猜它到处都会失败..

原因是:

  • Range("A1:200")语法无效

正如 DG 在下面的评论中指出的那样,Range("1:1").Address确实有效,它根本不是无效的!

于 2013-10-30T13:43:26.710 回答
0

Match这是函数找不到匹配项时发生的错误。由于您没有向 提供第三个参数Match,因此问题可能是:a)您正在搜索的范围内的值未按升序排序,和/或 b)您正在搜索的值较小比您正在搜索的范围内的所有值。

于 2013-10-30T13:48:57.140 回答
0

试试这个:

Dim Result As Variant
If Not VBA.IsError(Application.Match(...)) Then
    Result = Application.Match(...)
End If

这会尝试匹配,如果函数出现错误,它将不会分配结果。

WorksheetFunction.Match 方法 (Excel)

于 2014-02-20T05:17:49.740 回答