Vba WorksheetFunction.Match用于临时工作表问题

Vba WorksheetFunction.Match用于临时工作表问题,vba,excel,worksheet-function,Vba,Excel,Worksheet Function,我正在临时工作簿中使用工作表函数.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.Sheet

我正在临时工作簿中使用
工作表函数.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错误,我不知道该错误的原因以及如何解决它?

试试看

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:A200")) 
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A36").EntireRow)
可能会在所有行中更改它。我想它会在任何地方失败

原因是:

  • 范围(“A1:200”)
    语法无效

正如DG在下面的评论中指出的,
范围(“1:1”)。地址
确实有效,它一点也不无效

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

尝试以下操作:

Dim Result As Variant
If Not VBA.IsError(Application.Match(...)) Then
    Result = Application.Match(...)
End If
这将尝试匹配,如果函数出现错误,则不会指定结果


范围(“1:1”)
不是无效的,例如键入
?范围(“1:1”)。即时窗口中的地址产生“$1:$1”。它指的是第一行。@道格·格兰西,你说得对,我全错了。修正-谢谢!