VBA匹配variables范围

我有一个与.Match函数的问题。 如果我在里面用引号和字母(“A:A”)来设置一个范围,那就很好了。 但是,当我尝试设置它与variables,它会给出1004错误。

这工作:

 a = WorksheetFunction.Match(Range("A1"), Sheets("Data").Range("A:A"), 0) 

这不起作用:

 a = WorksheetFunction.Match(Range("A2"), Sheets("Data").Range(Cells(a, 4), Cells(a + 5, 4)), 0) 

如何设置.Match函数中的variables范围?

您必须使用完全限定(最多worksheet对象) range引用,否则它们默认为当前“活动”工作表

  a = WorksheetFunction.Match(Range("A2"), Sheets("Data").Range(Sheets("Data").Cells(a, 4), Sheets("Data").Cells(a + 5, 4)), 0) 

您可能会发现在这里使用Resize()会更容易:

 a = WorksheetFunction.Match(Range("A2"), _ Sheets("Data").Cells(a, 4).Resize(6, 1), 0)