匹配不起作用Excel:错误1004无法获取匹配属性

use*_*889 2 excel vba excel-vba

Sub Sales_Summary_Macro()

    Dim strMake, strModel, strCount As String
    Dim makeLoc, modelLoc, countLoc As Integer

    strMake = Application.InputBox("Make")
    strModel = Application.InputBox("Model")
    strCount = Application.InputBox("Count")

    If strMake <> False Then
        Debug.Print strMake
        Debug.Print strModel
        Debug.Print strCount
        makeLoc = WorksheetFunction.Match(strMake, Range("A1:A10"), 0)
        Debug.Print makeLoc
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

我只想在三个不同的变量上获取用户的字符串输入,并找到包含每个变量的列。我已经尝试过Application.Match()和Match(),但似乎都没有用。

Jer*_*ino 5

技术不全面,不会发布代码。但是,三件事:

第一,请确保您的范围始终完全合格。例如,Range("A1:A10")还远远不够。您应指定此文件应位于哪张纸上。如果您从另一个工作表调用此宏,它将给您错误的结果或引发错误。

二,不做太多细节:

  1. Application.Match如果找不到匹配项,则返回错误值。可以使用来处理IsError,这是simoco在他的回答中所做的。
  2. WorksheetFunction.Match 抛出一个1004错误,当它没有找到一个错误。这与返回值不同。因此,这(很难)处理。

最佳做法是始终使用第一个。

三,VBE中的即时窗口是您最好的朋友。?Application.Match("FindMe", [A1:A10], 0)窗口中的简单窗口可以帮助您检查公式是否得出相似的预期结果。

Application.Match返回错误值

如上面的屏幕快照所示,找不到字符串,并且返回错误值。

希望这可以帮助!