2014-01-22 4 views
0

В моем машинном программировании у меня есть следующий код, который отлично работал, когда у меня были все данные для машин в тех же листах, что и ComboBox2, но ТЕПЕРЬ Я реорганизовал данные и разделил их на 10 разных листов , Это означает, что один лист с элементами для каждого машинного кода.Переменная совпадение в нескольких листах

ТЕПЕРЬ, моя проблема в этом, как мне настроить код ниже, чтобы он выполнял поиск и сопоставление в столбце AG во ВСЕХ 10 листах, а не только в текущем листе?

Я попытался использовать оператор IF и оператор Case, но они просто не сработают.

Любые советы приветствуется :)

Private Sub ComboBox2_Change() 

Dim vr% 
vr = 0 
On Error Resume Next 
vr = WorksheetFunction.Match(ComboBox2.Value, Columns("AG"), 0) 
On Error GoTo 0 
If vr = 0 Then Exit Sub 
If ComboBox2.Value = "Velg utstyr her" Then Exit Sub 
Range("AE" & vr & ":AM" & vr).Copy Destination:=Range("C91").End(xlUp).Offset(1, 0) 

End Sub  

Update 1: (Попытка Переберите листов, но не работает)

Private Sub ComboBox2_Change() 

Dim Current As Worksheet 
Dim vr% 

For Each Current In Worksheets 

vr = 0 
On Error Resume Next 
vr = WorksheetFunction.Match(ComboBox2.Value, Columns("AG"), 0) 
On Error GoTo 0 
If vr = 0 Then Exit Sub 
If ComboBox2.Value = "Velg utstyr her" Then Exit Sub 
Range("AE" & vr & ":AM" & vr).Copy Destination:=Sheets("Sheet1").Range("C91").End(xlUp).Offset(1, 0) 

Next 

End Sub 
+0

Это лучше держать все ваши данные в одном месте, если они имеют одинаковую структуру. Просто добавьте столбец «model». Чтобы прокручивать листы: http://support.microsoft.com/kb/142126 –

+0

У меня было все в 1 таблице данных, но каждый раз, когда появился новый machinemodell, я должен добавить его в список, и через некоторое время все становится настолько беспорядочным. Вот почему я думал, что один лист на машинный номер будет легче администрировать. Я пробовал прокручивать листы, но не могу заставить код работать. Очевидно, что-то там не так. См. Мой обновленный ответ для кода, в котором я закончил. До сих пор .... – tnuis

+0

Решено, спасибо :) – tnuis

ответ

0

Непроверенные:

Private Sub ComboBox2_Change() 

    Dim sht As Worksheet 
    Dim v 

    If ComboBox2.Value = "Velg utstyr her" Then Exit Sub 

    For Each sht In ThisWorkbook.Worksheets 

     v = Application.Match(ComboBox2.Value, sht.Range("AG:AG"), 0) 
     If Not IsError(v) Then 
      sht.range("AE" & v & ":AM" & v).Copy _ 
        Activesheet.Range("C91").End(xlUp).Offset(1, 0) 
      Exit For 'if you only expect one hit 
     End If 

    Next 

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