首页 > 解决方案 > 将整行复制到另一个工作表中从特定行开始的下一个空行

问题描述

我试图在这个论坛中寻找答案,我也尝试修改代码以满足我的要求,但仍然没有成功。有人可以帮我吗?

我有一个 6 张的 excel 文档。所有工作表都具有相同(固定)的形式。前 5 张表基本上是数据库,其中我有来自 5 个不同项目的电气部件,第 6 张表是一个空表格,应该用作订单列表。

我需要的是一个代码,如果满足条件,它将把整行从工作表 1/2/3/4/5 复制到工作表 6。标准是在 C 列(表 1/2/3/4/5)中输入的数量(不同于 0)。这是主要问题,我需要将整行复制到工作表 6 中的下一个空行——但表格从第 14 行(A14)开始,上面是标题。

现在我有命令按钮的代码,只有当我在一张表中工作并尝试将行复制到表 6(订单列表)时才有效。如果我在工作表 5 中工作并且例如跳到表 3,并且如果我尝试从表 3 向订单列表中添加更多零件,它只会复制订单列表中的所有现有零件,我已经从中复制表 5。

这是我到目前为止的代码(在这个例子中,我只使用了 Sheet 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

标签: excelvbaformscopy-paste

解决方案


这假设您在工作簿中只有 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

推荐阅读