Копирование нескольких страниц и очистка ячеек - PullRequest
1 голос
/ 27 мая 2019

У меня есть 7 листов в файле Excel, которые мне нужно скопировать сразу.Я создал кнопку, чтобы сделать это с кодом, показанным ниже.Тем не менее, я также хочу иметь возможность очистить некоторые ячейки при копировании листов.Я пытался изменить второй набор кода из другой книги, которая копировала одну страницу за раз и очищала ячейки, но, похоже, я не могу заставить ее работать.Код не должен искать самую последнюю неделю, как показано в приведенном ниже коде, мне просто нужно скопировать мои 7 листов и очистить ячейки G18: G37 на листах со 2 по 7. Спасибо

'Что яесть прямо сейчас. '

Private Sub CommandButton1_Click()

Worksheets(Array("Coding Details", "Schedule A", "Schedule B", "Schedule C", "Schedule D", "Schedule E", "Schedule F")).Copy After:=Worksheets(Worksheets.Count)

End Sub

' То, что я использую в другой моей книге '

Private Sub CommandButton1_Click()

Dim wrkSht As Worksheet
Dim lWkNum As Long
Dim lCurNum As Long
Dim sht_LastWeek As Worksheet
Dim sht_NewWeek As Worksheet

'Find previous week and set reference to it.
For Each wrkSht In ThisWorkbook.Worksheets
    If IsNumeric(Replace(wrkSht.Name, "Week ", "")) Then
        lCurNum = CLng(Replace(wrkSht.Name, "Week ", ""))
        If lCurNum > lWkNum Then lWkNum = lCurNum
    End If
Next wrkSht
Set sht_LastWeek = ThisWorkbook.Worksheets("Week " & lWkNum)

'Create new sheet, set reference to it and rename.
sht_LastWeek.Copy After:=Sheets(sht_LastWeek.Index)
Set sht_NewWeek = Sheets(sht_LastWeek.Index + 1)
sht_NewWeek.Name = "Week " & lCurNum + 1

'Clear the cells and relink formula to previous sheet.
With sht_NewWeek
    .Range("B40:J45,C18:I21,E26:F31").ClearContents
    .Cells.Replace What:="'Week " & lCurNum - 1 & "'!", _
                   Replacement:="'Week " & lCurNum & "'!", _
                   LookAt:=xlPart
End With

End Sub

1 Ответ

0 голосов
/ 28 мая 2019

Это должно работать:

Private Sub CommandButton1_Click()

    Dim n As Long, wb As Workbook

    Set wb = ThisWorkbook

    wb.Worksheets(Array("Coding Details", "Schedule A", "Schedule B", _
                    "Schedule C", "Schedule D", "Schedule E", "Schedule F")).Copy _
                    After:=wb.Worksheets(wb.Worksheets.Count)
    For n = 0 To 5
        wb.Worksheets(wb.Worksheet.Count - n).Range("G18:G37").ClearContents
    Next n


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...