У меня есть таблица с именем Data Sheet
, которая собирает данные из других таблиц с помощью формул и отлично работает. Мне нужен макрос, который будет копировать данные из нескольких строк, чтобы я мог вставить их в отдельную книгу.
У меня 30 строк данных в диапазоне от A3:EI3
до A32:EI32
. Эти данные собираются с 1 до 30 других листов, если они отображаются и вводятся данные. Вот сложная часть: я хочу только собрать данные с видимых листов.
Вот пример потока, который я ищу: Sheet 1
всегда видим и никогда не скрыт. Sheet 2
, Sheet 3
и Sheet 4
видимы, но с Sheet 5
по Sheet 30
все еще скрыты. Data Sheet
уже собрал данные с видимых листов, но все оставшиеся строки (листы 5-30) показывают 0
в ячейках данных.
Теперь я хочу запустить макрос, который скопирует данные (в буфер обмена) из Data Sheet
Row 3
(представляет Sheet 1
), Row 4
(представляет Sheet 2
) и т. Д. И позволит мне вставьте в следующую доступную строку в другой книге.
Вот код, который работает для одной строки данных.
Код VBA:
Sub CopyDataSheet()
'
' CopyDataSheet Macro
'
Application.ScreenUpdating = False
Sheets("Data Sheet").Visible = True
Sheets("Data Sheet").Select
Rows("3:3").Select
Selection.Copy
Rows("1:1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1:EF1").Select
Application.CutCopyMode = False
Selection.NumberFormat = "0"
Rows("1:1").Select
Range("B1").Activate
Selection.Copy
Sheets("Sheet 1").Select
Range("a38").Select
Sheets("Data Sheet").Visible = True
Application.ScreenUpdating = True
MsgBox "YOU HAVE CAPTURED ALL ENTERED DATA..." & _
vbCrLf & vbCrLf & "CLICK OK" _
& vbCrLf & vbCrLf & "PASTE INTO NEXT EMPTY LINE OF DATA SHEET", _
vbInformation, ""
End Sub