簡體   English   中英

Excel VBA-匹配函數錯誤(無法獲取匹配屬性)

[英]Excel VBA - Match function error (Unable to get match property)

我正在嘗試進行匹配搜索以篩選出某些數據匹配的行。 例如,我有“ ButtonName”,它顯示了必須放置哪個列過濾器,而“ DataRange.Rows(1) ”是它嘗試搜索匹配項的范圍。 有時,當我進行一些編輯時,它顯示:

對象定義的錯誤

現在它顯示:

無法獲得比賽屬性

請有人告訴我代碼中的錯誤是什么?

Private Sub CommandButton21_Click()

    Dim myButton As OptionButton
    Dim SearchString As String
    Dim ButtonName As Variant
    Dim sht As Worksheet
    Dim myField As Long
    Dim DataRange As Range
    Dim mySearch1, mySearch2, mySearch3 As Variant

    'Load Sheet into A Variable
      Set sht = ActiveSheet
      Set a = ActiveSheet
    'Unfilter Data (if necessary)
      On Error Resume Next
      sht.ShowAllData
      On Error GoTo 0

    'Filtered Data Range (include column heading cells)
       Set DataRange = sht.Range("A13:AL3000") 'Cell Range

    'Retrieve User's Search Input

    mySearch1 = sht.Range("D4").Text 'Control Form     ''Contains data entered in D4cell

     ButtonName = sht.Range("M12").Text     

     If Not IsError(WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0))          Then

        myField = WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0)
     Else
       MsgBox "no match is found in range(" & rngToSearch.Address & ")."
     End If


    'Filter Data
       DataRange.AutoFilter _
       Field:=myField, _
       Criteria1:="=*" & mySearch1 & "*", _
       Operator:=xlAnd, _
       Criteria2:="=*" & mySearch2 & "*", _
       Operator:=xlAnd, _
       Criteria2:="=*" & mySearch3 & "*", _
       Operator:=xlAnd

End Sub

該行發生錯誤:

If Not IsError(WorksheetFunction.Match(ButtonName, DataRange.Rows(1), 0))

進行以下更改:

Dim myField As Variant   'IMPORTANT

myField = Application.Match(ButtonName, DataRange.Rows(1), 0)

If IsError(myField) Then
    MsgBox "no match is found in range(" & rngToSearch.Address & ")."
Else
    'Filter Data
    DataRange.AutoFilter _
    Field:=myField, _
    Criteria1:="=*" & mySearch1 & "*", _
    Operator:=xlAnd, _
    Criteria2:="=*" & mySearch2 & "*", _
    Operator:=xlAnd, _
    Criteria2:="=*" & mySearch3 & "*", _
    Operator:=xlAnd
End If

嘗試對表達式求值:

If Evaluate("ISERROR(MATCH(""" & ButtonName & """," & Selection.Rows(1).Address & ",0))") Then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM