大家好,我正在为Udemy上一门课程,但不幸的是,讲师的反应不是最迅速的。
我有一本名为QuarterlyReport的工作簿和5张纸。
我的代码格式化工作表1-4,然后复制将信息粘贴到“年度报告”上最后一个未使用的行上。 由于某种原因,该代码仅粘贴South Records。我的目标是复制每张纸1-4,并将其粘贴到第五张纸“ YEARLY REPORT”。
Public Sub Finalreportloop()
Dim i As Integer
i = 1
Do While i <= Worksheets.Count - 1
Worksheets(i).Select
AddHeaders
FormatData
AutoSum
' copy the current data
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
' select the final report WS'
Worksheets("yearly report").Select
'find the empty cells
LastRow = Sheets(i).Range("A" & Sheets(i).Rows.Count).End(xlUp).Row
'paste the new data in
ActiveSheet.Paste
i = i + 1
Loop
End Sub
Addheaders,FormatData和AutoSum参考我创建的其他模块。谢谢大家!
答案 0 :(得分:0)
该代码确定要复制的工作表的最后一行,但是您不会对该信息进行任何操作。相反,它只是粘贴到活动工作表中并覆盖最后一个循环实例中发布的数据。因此,看起来好像只是在复制/粘贴最后一个数据集。
您需要在“年度”表中找到最后一行,然后将数据粘贴到该行下方。
答案 1 :(得分:0)
您可以尝试以下方法之一:
Option Explicit
Sub test()
Dim ws As Worksheet
Dim wsLastRow As Long, wsLastColumn As Long, yrLastRow As Long
Dim rngCopy As Range
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "YEARLY REPORT" Then
With ws
'Method 1 - You can siply used range
' .UsedRange.Copy
'Method 2 - You can calculate LastColumn & LastRow and create the range
wsLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row '<- Find last row of column A.
wsLastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column '<- Find the last column of row 1.
Set rngCopy = .Range(Cells(1, 1), Cells(wsLastRow, wsLastColumn)) '<- Create the range to be copy.
rngCopy.Copy
End With
With ThisWorkbook.Worksheets("YEARLY REPORT")
yrLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row '<- Find last row of column A.
.Range("A" & yrLastRow + 1).PasteSpecial xlPasteValues
End With
End If
Application.CutCopyMode = False
Next ws
End Sub