匹配function? VBA不能正常工作

我有一个下面的代码,我有单元格B11,B19和B25“名称”,我期待的结果19或25的代码,但它返回Y = 1。 谁能告诉我有什么问题?

Sub mat() Y = Application.Match("name", ActiveSheet.Range("B19:B30"), 0) MsgBox Y End Sub 

根据MATCH的文件 :

MATCH返回lookup_array中匹配值的位置,而不是值本身。

0作为可选的第三个参数( match_type ):

如果match_type为0,则MATCH查找与lookup_value完全相同的第一个值。 Lookup_array可以以任何顺序。

因此,返回的1指向数组Range("B19:B30") B19上的位置Range("B19:B30") ,并且代码示例的行为确实如预期。

 Application.Match("name", ActiveSheet.Range("B19:B30"), 0) 

MATCH函数在单元格范围内search指定的项目,然后返回该项目在该范围内的相对位置

所以parsing参数ActiveSheet.Range("B19:B30")意味着B19等于相对位置 =1

添加slgn

 Sub mat() Y = Application.Match(slng(range("a4").value), ActiveSheet.Range("B19:B30"), 0) MsgBox Y End Sub 

EX2:

 Application.WorksheetFunction.Match(CLng(TextBox1.Text), sheet110.Range("B6:B" & ls), 0)