Это то, что у меня сейчас, и оно работает так, как я хочу.
Sub CopytoMaster2()
Dim wb As Workbook
Dim sh As Worksheet
Dim ws As Worksheet
Dim DestSh As Worksheet
Dim mainSh As Worksheet
Dim Last As Long
If SheetExists("Master") = True Then
MsgBox "The sheet Master already exist"
Exit Sub
End If
Application.ScreenUpdating = False
Set DestSh = Worksheets.Add
DestSh.Name = "Master"
Set wb = ActiveWorkbook
Set mainSh = wb.Sheets("Main")
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> mainSh.Name And sh.Name <> DestSh.Name Then
If sh.UsedRange.Count > 1 Then
Last = LastRow(DestSh)
sh.Rows(mainSh.Range("E7").Value).Copy DestSh.Cells(Last + 1, 1)
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Sub CheckMaster2 () Dim wb As Workbook Dim sh As WorksheetDim ws As Worksheet Dim DestSh As Worksheet Dim mainSh As Worksheet Dim Last As Long, если SheetExists ("Master") = True, тогда MsgBox "Мастер листа уже существует", Exit Sub End If Application.ScreenUpdating = False Установить DestSh = Worksheets.Add DestSh.Name = "Master" Set wb = ActiveWorkbook Set mainSh = wb.Sheets ("Main")
For Each sh In ThisWorkbook.Worksheets
If mainSh.Name <> sh.Name And sh.Name <> DestSh.Name Then
If sh.UsedRange.Count > 1 Then
Last = LastRow(DestSh)
With sh.Rows(mainSh.Range("E7").Value)
DestSh.Cells(Last + 1, 1).Resize(.Rows.Count, _
.Columns.Count).Value = .Value
End With
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Функция LastRow2 (sh As Worksheet) При ошибке Возобновить Следующая LastRow= sh.Cells.Find (Что: = "*", _ После: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Row On Error GoTo 0 Завершить функцию
Функция Lastcol2 (sh As Worksheet) В случае ошибки Resume Next Lastcol = sh.Cells.Find (What: = "*", _ After:= sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Столбец при ошибке GoTo 0 Завершить Функция Функция SheetExists2 (SName As String, _ Необязательный ByVal wb As Workbook) В качестве логического значения On Error Resume Next Далее, если wb нет ничего, затем установить wb = ThisWorkbook SheetExists =CBool (Len (Sheets (SName). Name)) End Function