2016-06-10 2 views
1

Я работаю в двух разных листах в excel, каждый из которых имеет набор из примерно 1200 идентификационных номеров. Когда вы ссылаетесь на лист 1 (сводка RG), я пытаюсь найти номер строки, которую ID выводит на листе 2 (Матрица закупок). Это, в конечном счете, приведет к некоторому условному форматированию на листе 1, где идентификаторы листа 2 имеют определенные значения в их строке. Я действительно очень мало знаю о VBA (я просто занимаюсь боксом для моей стажировки этим летом), поэтому я уверен, что могу пропустить какую-то важную концепцию ... Но в настоящее время я получаю эту ошибкуОшибка 1004 с методом совпадения в excel vba

Run -время ошибка «1004: Невозможно получить матч свойство класса WorksheetFunction

на

RowNum= WorksheetFunction.Match(ID2, Range("E10:E1500"), 0) 

При отладке, я могу видеть, что ID2 несет значение идентификатора первой итерации, но RowNum возвращается как 0.

Sub DisplayMatrix() 

Dim i As Integer, j As Integer, ItemID As String, rng1 As Range, _ 
ID2 As String, RowNum As Integer, PM As Worksheet 

'initiates loop in sheet 1 
'each ID is 7 cells apart 
For i = 14 To 1757 Step 7 

     'sets ID variable where ID is present 
     If Cells(i, 2).Value <> "" Then ItemID = Worksheets("RG Summary").Cells(i, 2).Value 

      'finds ID in sheet2 
      ID2 = Worksheets("Purchasing Matrix").Cells.Find(What:=ItemID, _ 
      LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, _ 
      SearchDirection:=xlNext, MatchCase:=False) 

      'matches ID2 and ItemID and returns row number from sheet 2 
      Set PM = Worksheets("Purchasing Matrix") 
      With PM 
      RowNum = WorksheetFunction.Match(ID2, Range("E10:E1500"), 0) 
      End With 


    Next i 
    End 

End Sub 
+0

Попробуйте заменить «Приложение» на «Рабочий лист» как o bject, который содержит функцию соответствия. Я сейчас на Linux, поэтому я не могу проверить, в чем проблема, но это было бы моим первым догадком. Документы на https://msdn.microsoft.com/en-us/library/office/ff835873.aspx немного неоднозначны относительно того, как это следует использовать, но похоже, что в этом примере используется Match() как метод приложения , – user2027202827

+0

Ошибка «тип несоответствия» возвращается, когда я это делаю! – StephB

+0

Дайте мне минутку, чтобы подтянуть окна, и я еще раз посмотрю. – user2027202827

ответ

1

Заменить:

RowNum = WorksheetFunction.Match(ID2, Range("E10:E1500"), 0) 

с:

RowNum = WorksheetFunction.Match(ID2, .Range("E10:E1500"), 0) 

(точка может быть небольшой, но это важно)
(могут быть и другие проблемы)

Смежные вопросы