Скопировать всю строку в следующую пустую строку на другом листе, который начинается с определенной строки - PullRequest
1 голос
/ 20 марта 2019

Я пытался найти ответ на этом форуме, я также пытался изменить код, чтобы он соответствовал моим требованиям, но все еще безуспешно.Может ли кто-нибудь помочь мне?

У меня есть документ Excel на 6 листов. Все листы имеют одинаковую (фиксированную) форму .Первые 5 листов - это, в основном, базы данных, в которых у меня есть электрические детали из 5 разных проектов, а 6-й лист - это пустая форма, которую следует использовать в качестве списка заказов.

Мне нужен код, который будет копировать весьстрока от листа 1/2/3/4/5 до листа 6, если критерии выполнены.Критерием является введенное количество (отличное от 0) в столбце C (ведомости 1/2/3/4/5).Вот в чем основная проблема, мне нужно скопировать всю строку в следующую пустую строку на листе 6 - но форма начинается со строки 14 (A14), выше - заголовок.

Теперь у меня есть код для командыкнопка, которая работает, только если я работаю на одном листе и пытаюсь скопировать строки на лист 6 (Список заказов).Если я работаю на листе 5 и перехожу, например, на лист 3, и если я пытаюсь добавить еще несколько деталей в список заказов из листа 3, он просто скопирует все существующие детали в списке заказов, который я уже скопировал сЛист 5.

Вот код, который у меня есть (в этом примере я использовал только Лист 5 - «Gemeinsam»):

Private Sub CommandButton1_Click()
    a = Worksheets("Gemeinsam").Cells(Rows.Count, 5).End(xlUp).Row
    b = 14
    For i = 14 To a

       If Worksheets("Gemeinsam").Cells(i, 3).Value > 0 Then

          Worksheets("Gemeinsam").Rows(i).Copy
          Worksheets("Stückliste").Activate
          Worksheets("Stückliste").Cells(b, 1).Select
          ActiveSheet.Paste
          Worksheets("Gemeinsam").Activate
       b = b + 1
       End If
    Next

Application.CutCopyMode = False

ThisWorkbook.Worksheets("Gemeinsam").Cells(14, 1).Select

End Sub

1 Ответ

1 голос
/ 20 марта 2019

Это предполагает, что у вас есть только 6 рабочих листов в рабочей книге.Некоторые имена переменных были изменены, но, надеюсь, понятны.

Private Sub CommandButton1_Click()

    Dim ws As Worksheet
    Dim ws1 As Worksheet
    Dim DestLastRow As Long
    Dim LastRow As Long
    Dim i As Long

    Set ws1 = Sheets("Stückliste")

    For Each ws In Worksheets
        If ws.Name <> "Stückliste" Then
            LastRow = ws.Cells(Rows.Count, 5).End(xlUp).Row
            For i = 14 To LastRow
                If ws.Cells(i, 3).Value > 0 Then
                    DestLastRow = ws1.Cells(Rows.Count, 5).End(xlUp).Row + 1
                    ws.Rows(i).Copy ws1.Rows(DestLastRow)
                End If
            Next i
        End If
    Next ws

    Application.CutCopyMode = False

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...