2016-04-21 4 views
0

Я хочу, чтобы скопировать определенные значения из другого листа из другой книги в VBA первенствовать, но им собирающий эээ 1004. это мой кодСкопируйте и вставьте в другую книгу с если заявление

Sub copiar() 
    Dim rng As Range 
    Dim cell As Range 
    Dim rng2 As Range 
    Dim cell2 As Range 


    Set rng2 = Range("A2:A5") 
    Set rng = Workbooks("perfumes.xlsx").Sheets("hoja").Range("A4:A10") 


    For Each cell In rng2 
     For Each cell2 In rng 
      If cell2 = cell Then Workbooks("perfumes.xlsx").Worksheets("Hoja 1").Range("K" & cell2.Row).Copy Range("H" & cell.Row) 
     Next cell2 
    Next cell 

End Sub 

Бруса понять, где происходит ошибка Im совершенно новый для макросов, migth нужна помощь, спасибо

+0

У меня есть другой вопрос, имеет ли диапазон() номер максимального номера? Потому что это должно работать с 20k строк –

+0

Что такое сообщение об ошибке? Я не думаю, что ошибка 1004 всегда имеет одно и то же сообщение. –

ответ

0

В коде нет ничего плохого, поэтому ошибка времени выполнения - это проблема с данными, поэтому показ данных в вашем вопросе поможет. Вы можете отображать данные, выбирая таблицу прямо здесь или ссылаясь на что-то вроде электронной таблицы Google или каким-то образом показываете примеры данных в данной строке.

+0

структура? вы имеете в виду рабочие листы? –

+0

теперь он копирует, но просто копирует 0s, не знаю почему –

0

Я был заинтригован кодом, поэтому я немного изменил его, чтобы быть более очевидным, что он делает. Этот код делает именно то, что делает код OP; никакой разницы вообще. Добавлены некоторые комментарии.

Sub copiar() 
    'Dim rng As Range 
    Dim cell As Range 
    'Dim rng2 As Range 
    Dim cell2 As Range 


    'active sheet 
    'Set rng2 = ActiveSheet.Range("A2:A5") 
    'rng2.Select 

    'compare sheet 
    Dim hojaSheet As Worksheet 
    Set hojaSheet = Workbooks("perfumes.xlsx").Sheets("hoja") 
    'Set rng = hojaSheet.Range("A4:A10") 

    'source sheet 
    Dim hoja1Sheet As Worksheet 
    Set hoja1Sheet = Workbooks("perfumes.xlsx").Sheets("hoja 1") 

    'compare each cell in range in the activeSheet 
    For Each cell In ActiveSheet.Range("A2:A5").Cells 
     'to each cell in range in hojaSheet 
     For Each cell2 In hojaSheet.Range("A4:A10").Cells 
      'if matching then copy from hoja 1 sheet to ActiveSheet 
      If cell2 = cell Then 
       Call hoja1Sheet.Range("K" & cell2.Row).Copy(ActiveSheet.Range("H" & cell.Row)) 
       Debug.Print "copy from: Hoja 1!" & "K" & cell2.Row & " > " & "copy to: ActiveSheet!" & "H" & cell.Row 
      End If 
     Next cell2 
    Next cell 

End Sub 

Не исправить ничего, но может быть полезно, если это поможет прояснить, что делает код.

+0

Спасибо, не нашли ошибку в коде? –

+0

Нет. Теперь вы можете ответить на мой вопрос выше? Каково было сообщение об ошибке? –

+0

теперь он копирует, а просто копирует 0s, не знаю почему –

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