【发布时间】:2014-02-01 14:39:19
【问题描述】:
我浏览了论坛并尝试了各种选项,但没有找到适合我的问题的明确匹配项:
我的任务是将数据从工作表(称为“工作订单”)复制到第二个工作表(称为“分配”)。要复制的数据来自“工作订单”工作表,从单元格区域“E2,P2:S2”开始;并且还从每一行(相同范围)复制,直到列“P”为空 - (每次我们需要运行此宏时,要复制的行数可能会有所不同,因此我们无法选择标准范围)。然后粘贴到“作业”工作表中,从单元格“A4”开始。到目前为止,我已经使用论坛成功地复制了单行日期(从第 2 行开始)——我承认这很容易,并且我使用了各种版本的代码来实现这一点。 我还尝试了一些代码(我通过观看 youtube 剪辑并修改 http://www.youtube.com/watch?v=PyNWL0DXXtQ 发现)以允许我运行一个循环,该循环为“工作订单”工作表中的每个所需行重复复制过程,然后将数据粘贴到“作业”工作表 - 但这是我做错的地方,我认为我的思路是正确的,并且认为我离得不远,但任何帮助都会非常有用。
下面的代码示例(前 2 个仅复制第一行,第三个示例是我尝试循环和复制多行的地方:
Sub CopyTest1()
' CopyTest1 Macro
'copy data from workorders sheet
'Worksheets("workorders").Range("E2,P2,Q2,R2,S2").Copy
Worksheets("workorders").Range("E2, P2:S2").Copy
'paste data to assignments sheet
'sheets("assigments dc").Range("A4").Paste
Sheets("Assigments DC").Select
Range("A4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Sub CopyTest2()
Sheets("workorders").Range("e2,p2,q2,r2,s2").Copy Sheets("assigments dc").Range("a4")
End Sub
Sub CopyTest3()
Dim xrow As Long
'Dim xrow As String
xrow = 2
Worksheets("workorders").Select
Dim lastrow As Long
lastrow = Cells(Rows.Count, 16).End(xlUp).Row
Do Until xrow = lastrow + 1
ActiveSheet.Cells(xrow, 16).Select
If ActiveCell.Text = Not Null Then
'Range("E2,P2,Q2,R2,S2").Copy
'Selection = Range("E2,P2,Q2,R2,S2").Copy
'Cells(xrow, 5).Copy
Cells(xrow, 5).Copy
Sheets("Assigments DC").Select
Range("A4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("workorders").Select
End If
xrow = xrow + 1
Loop
End Sub
【问题讨论】:
标签: vba excel excel-2010