Application.match在VBA中

时间:2017-05-24 13:16:36

标签: excel vba excel-vba match

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

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

AD列中的单元格值主要是公式的结果,但AD1除外,它的字符串为“Check if 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

2 个答案:

答案 0 :(得分:4)

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

Application.Match(1, ws.range("AD:AD"),0)

其中ws是您的工作表。

答案 1 :(得分:2)

问题在于您使用Application.Match的方式。 它应该是这样的:

If Not IsError(Application.Match(1, Range("AD:AD"), 0)) Then

在此处查看更多内容:https://msdn.microsoft.com/en-us/library/office/ff835873.aspx