Я заблудился и пытался найти эту конкретную проблему на нескольких форумах, и мне кажется, что я не могу собрать ее воедино. Очень быстрый вопрос, надеюсь. Этот код предназначен для:
- Поиск последней ячейки, содержащей данные в 5 листах. Он должен искать данные, отличные от столбца «A» или «B», поскольку они могут быть или не быть пустыми.
- повторить для всех 5 листов в массиве
- Вставьте все данные из 5 листов в исходную рабочую книгу в «Лист 4» один за другим
У меня проблема в том, что может быть, usedrange.copy странным образом копирует все данные из 5 рабочих книг. Кажется, он не копирует ВСЕ данные (возможно, считая столбец A, чтобы найти последнюю использованную строку и копируя на основании этого?).
Есть ли другой способ достижения того, что мне нужно сделать? Я думал, что это будет проще, потому что это просто копирование всех данных с 5 листов и вставка в другой wkbk ... но ... нет. Любая помощь с благодарностью.
Sub Notes2()
'Last row in column
Dim WS As Worksheet, shAry As Variant, i As Long
Dim AOFF As Range
Dim rOWIS As Integer
Dim wb As Workbook, wb2 As Workbook
Dim vFile As Variant
'Set source workbook
Set wb = ActiveWorkbook
Set WS = Worksheets("Sheet 4")
With WS
Set LastCell = .Cells(.Rows.Count, "A").End(xlUp)
LastCellRowNumber = LastCell.Row + 1
End With
'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
1, "Select File To Open", , False)
'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
Set wb2 = Workbooks.Open(vFile)
With wb2
shAry = Array(.Sheets("Week 1"), .Sheets("Week 2"), .Sheets("Week 3"), .Sheets("Week 4"), .Sheets("Over 30"))
End With
For i = LBound(shAry) To UBound(shAry)
shAry(i).UsedRange.Copy
wb.Activate
WS.Cells(Rows.Count, 3).End(xlUp).End(xlUp)(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next
Application.ScreenUpdating = True
'Close
wb2.Close False
End Sub