2015-10-02 8 views
1

Здравствуйте, я попробовал следующий код, чтобы помочь мне копировать данные с одного листа на другой с одним условием (копировать только строки с «Завершено - Назначение сделано/Complété - Nomination faite» (Range (AB)). Я ничего не вижу когда я нажимаю на кнопку.копировать данные с одного листа на другой?

любая помощь приветствуется

Sub copier() 
Dim ws1 As Worksheet, ws2 As Worksheet, src As Range, dest As Range, i As Integer 

Set ws1 = Worksheets("Workload - Charge de travail") 
Set ws2 = Worksheets("Sheet1") 


For i = 2 To ws1.Range("A1").SpecialCells(xlLastCell).Row 


    Set src = ws1.Range("A2:AL50") ' la selection des plages de donnees 
    Set dest = ws2.Range("A2:AL50") 


    If src.Cells(i, 31).Value = "Completed - Appointment made/Complété - Nomination faite" Then 

     '(i,31) for my drop down list 


     src.Copy Destination:=dest ' page source 
     dest.Value = dest.Value 'destination page 

    End If 

Next i 
End Sub 
+1

Согласно [странице MSDN на Range.Cells] (https://msdn.microsoft.com/ en-us/library/office/ff196273.aspx) свойство 'Cells (x, y)' возвращает определенную ячейку в вашем диапазоне. Это относительно диапазона, чью ячейку вы находите. В вашем примере вы ссылаетесь на 'ws1.Range (« A2: AL50 »)'. Имеет ли столбец 32 текст, который вы ищете, или находится в столбце 31? –

+0

его выпадающий список и он существует в каждой строке и заполнен 3 параметрами, его в столбце 28. Если src.Cells (i, 28) .Value = «Завершено - Назначение сделано/Complété - Назначение faite» –

+0

Столбец 28 на листе будет ссылаться на 'src.Cells (i, 28)'. Попробуйте это и посмотрите, поможет ли это. В исходном посте у вас есть 'src.Cells (i, 31)'. –

ответ

1

Проводка в качестве ответа, потому что я чувствую, что должен быть один.

чтобы продолжить нашу дискуссию от комментариев, вы пытаетесь скопируйте только строки, которые содержат значение «Завершено - Назначение сделано/Complété - Nomin ция faite»в колонке 28.

Я думаю, что вы могли бы сделать что-то вроде этого, выполнив:

Sub copier() 
    Dim ws1 As Worksheet, ws2 As Worksheet, src As Range, dest As Range, i As Integer 
    Dim DestinationRow As Integer 

    DestinationRow = 1 
    Set ws1 = Worksheets("Workload - Charge de travail") 
    Set ws2 = Worksheets("Sheet1") 

    For i = 2 To ws1.Range("A1").SpecialCells(xlLastCell).Row 
     Set src = ws1.Range("A2:AL50") 
     Set dest = ws2.Range("A2:AL50") 

     If src.Cells(i, 28).Value = "Completed - Appointment made/Complété - Nomination faite" Then 
      src.Rows(i).Copy Destination:=dest.Rows(DestinationRow) 
      DestinationRow = DestinationRow + 1 
     End If 
    Next i 
End Sub 
+0

Спасибо за вашу помощь. Да, именно так. Мне нужно, чтобы я получил объект, требуемый error –

+0

Ошибка здесь ' Set DestinationRow = 1' -Object required –

+0

Извините, измените его на 'DestinationRow = 1', а также на' DestinationRow = DestinationRow + 1'. Я отредактировал свой ответ, чтобы отразить это. –