繁体   English   中英

如何在VBA Excel中使用按钮复制行并将其粘贴到新工作表?

[英]How to use a button in VBA Excel to copy a row, and paste to a new sheet?

我尝试搜索其他问题,但发现类似的问题要粘贴到新工作表的下一行,但是我永远无法使它们起作用。

我正在制作的是库存跟踪表。 输入当前库存的是“当前库存”。 然后我有“ History 5440”,我要在其中创建Dell Latitude 5440笔记本电脑每周的历史记录。

我想发生的是,当您输入完当前清单后,单击“提交”按钮,让它找到5440项(A8),然后复制B8:G8中的输入。 复制后,将其粘贴到“历史5440”中从B列开始的下一个可用行。

我还将该按钮配置为发送当前清单的电子邮件,效果很好。

让我知道是否可以提供更多信息。 谢谢您的帮助!!

Sub Copy5440s()

' Copy5440s Macro
' Copys the 5440 info and pastes it to the next available row in History 5440.

Range("B8:G8").Copy
NextRow = Sheets("History 5440").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("History 5440").Paste

End Sub

因此,我可以使用以下三行代码来工作。

Sub Test5440_2()

' copyWeek Macro

Range("B3").Copy
Sheets("History 5440").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

' Copy Laptop Info

Range("B8:E8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0)

'Copy Last weeks

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)
End Sub

这样很好。 但是,当我制作它的副本以应用于其他工作表时,它只会做部分副本。 它适用于前两个“历史记录”选项卡。 之后,它仅复制“笔记本电脑信息”,而不复制星期或上周。

它可以完成3个任务的许多行,因此,如果有一种方法可以合并一些内容以使其变得更整洁,我很想弄清楚。 我认为这就是为什么它仅适用于前两个工作表的原因?

'复制笔记本电脑的信息并移至其历史记录标签

Range("B8:e8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0)

Range("B9:e9").Copy Sheets("History 7450").Range("B1048576").End(xlUp).Offset(1, 0)

Range("B10:e10").Copy Sheets("History 7470").Range("B1048576").End(xlUp).Offset(1, 0)

Range("B11:e11").Copy Sheets("History MBP 15 Retina").Range("B1048576").End(xlUp).Offset(1, 0)

Range("B12:e12").Copy Sheets("History MBP 13 Retina").Range("B1048576").End(xlUp).Offset(1, 0)

'Copy week and move to history

Range("B3").Copy
Sheets("History 5440").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Range("B3").Copy
Sheets("History 7450").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Range("B3").Copy
Sheets("History 7470").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Range("B3").Copy
Sheets("History MBP 15 Retina").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Range("B3").Copy
Sheets("History MBP 13 Retina").Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

'Copy Last weeks

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)

Sheets("History 5440").Range("F6").Copy Sheets("History 5440").Range("F1048576").End(xlUp).Offset(1, 0)
Private Sub CommandButton1_Click()
    ThisWorkbook.Sheets("Sheet2").Range("a2").Value = ThisWorkbook.Sheets("Sheet1").Range("a2").Value
End Sub

通常这是一件很容易的事情:)

通过使用以下命令,我可以达到所需的结果:

Range("B8:G8").Copy Sheets("History 5440").Range("B1048576").End(xlUp).Offset(1, 0)

它可能不是最有效的,但是可以完成工作。 如果您有关于如何改进它的建议,我很想听听!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM