Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将整行复制到另一个工作表中从特定行开始的下一个空行_Excel_Vba_Forms_Copy Paste - Fatal编程技术网

Excel 将整行复制到另一个工作表中从特定行开始的下一个空行

Excel 将整行复制到另一个工作表中从特定行开始的下一个空行,excel,vba,forms,copy-paste,Excel,Vba,Forms,Copy Paste,我试图在这个论坛上寻找答案,我也试图修改代码以满足我的要求,但仍然没有成功。谁能帮帮我吗 我有一份6页的excel文档所有工作表都有相同(固定)的形式。前5张表基本上是数据库,我有来自5个不同项目的电气部件,第6张表是一个空表单,应该用作订单列表 我需要的是一个代码,如果满足条件,它将把整行从表1/2/3/4/5复制到表6。标准是C列(第1/2/3/4/5页)中输入的数量(不同于0)。这就是主要问题所在,我需要将整行复制到第6页的下一个空行,但表单从第14行(A14)开始,上面是一个标题 现在我

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

我有一份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页复制了这些零件

以下是我到目前为止的代码(在本例中,我只使用了第5页-“Gemeinsam”):


假设工作簿中只有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
Private子命令按钮1\u单击()
将ws设置为工作表
将ws1设置为工作表
最后一排一样长
最后一排一样长
我想我会坚持多久
设置ws1=图纸(“Stückliste”)
对于工作表中的每个ws
如果ws.Name为“Stückliste”,那么
LastRow=ws.Cells(Rows.Count,5).End(xlUp).Row
对于i=14至最后一行
如果ws.Cells(i,3).Value>0,则
DestLastRow=ws1.Cells(Rows.Count,5)。End(xlUp)。Row+1
ws.Rows(i).复制ws1.Rows(DestLastRow)
如果结束
接下来我
如果结束
下一个ws
Application.CutCopyMode=False
端接头

你好,丹尼洛斯,我不确定你的目标是什么。您说过您需要从每个具有匹配条件的工作表中复制一行。标准在哪里?在C列中,只有一行符合您要查找的标准?因此,您的标准为>0,对于每张工作表,从1到5,您希望将每个单元格检查到最后一行,如果单元格包含值>0,则复制该行并粘贴到工作表6中的第一个空行。对吗?你只有6张工作表吗?Hello@Damian预计将“手动”移动Excel工作表,例如:在第4张工作表中,我发现了5张el。我想订购的零件->我将把金额放入C列->点击按钮将这些行添加到第6页,我有“订单列表”。例如,我转到第2页,在那里我将选择7 el。部分也将金额放入C列,然后再次单击按钮将整行添加到“订单列表”(第6页)。Hello@GMalc,不,我不同时进行检查。我只是浏览excel表格,首先搜索我需要订购的零件,然后在C列中输入值。是的,我只有6张表格。您不需要第一张
DestLastRow
,它只需要在for语句中。我提到它的唯一原因是我打算建议使用相同的代码,除了我更喜欢使用
Filter
SpecialCells
。另外,
ws1.Cells(Rows.Count,5).End(xlUp).Row
应该是1而不是15@GMalc如果删除,则第二行必须移到复制粘贴行的上方,否则第一次复制/粘贴将失败。如果将DestLastRow放置在前一行上方,则不需要在开始处使用该行。此外,您还需要添加+1,否则您将重写最后使用的行。@GMalc经过编辑以消除冗余变量声明谢谢@Darrell H,我明天上班时会试试。我不是100%确定,但如果我能把我的exel文件附加到这里,我会很乐意这样做,这样你就能更好地理解我的问题。
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