VBA中的Application.match

Kar*_*n88 1 excel vba match excel-vba

我正在使用“ Application.match”来查找工作表的列AD是否包含“ 1”。

但是,每当我尝试运行代码时,“ Else”条件始终为True。尽管我期望它进入“ If”条件,但由于列AD的单元格值为“ 1”。

AD列中单元格的值大部分是公式的结果,除了AD1(具有字符串“ Titile&Author Match”)和AD2(具有值“ 0”)。

问题是什么。有什么解决方案?

我希望您可以建议仍然使用“ .match”方法的解决方案。这是因为根据我的理解,“。match”方法返回范围内匹配的相对位置。我计划稍后在代码中使用该值。

Private Sub CmdLocateDta_Click()

Dim SearchColumn As Integer

If Not IsError(Application.Match(1, "AD:AD", 0)) Then
    SearchColumn = Application.Match(1, "AD", 0)
    MsgBox "Data has been located." & vbNewLine & _
           "You can now input the Lending Information below."
Else
    MsgBox "There seems to be no such book in the Database." & _
            vbNewLine & "Please re-check your input."
End If

End Sub
Run Code Online (Sandbox Code Playgroud)

小智 6

您需要在两个匹配项中指定搜索范围。

Application.Match(1, ws.range("AD:AD"),0)
Run Code Online (Sandbox Code Playgroud)

ws是您的工作表。