Копировать самые последние / последние листы в Excel - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать кнопку, которая копирует мои последние 7 листов. Этот код, очевидно, работает впервые, но затем он продолжает копировать первые семь листов, а не самые последние 7 (что имеет смысл, поскольку я ввел 1-7). Я попытался поставить негатив перед числами, но потом получаю сообщение об ошибке. Есть ли способ получить для копирования самые последние / последние 7 листов вместо моих начальных листов. Заранее спасибо.

Private Sub CommandButton1_Click()

Sheets(Array(1, 2, 3, 4, 5, 6, 7)).Copy After:=Worksheets(Worksheets.Count)

End Sub

1 Ответ

0 голосов
/ 05 мая 2020

не самое элегантное решение, но оно должно сработать

Dim wb As Workbook
Dim i As Long
Dim wsCount As Long

Dim a(1 To 7) As Long   'change here if you want other than 7
Set wb = ActiveWorkbook 'change workbook here if you want
wsCount = wb.Worksheets.Count 

    'creates an array of the last n worksheets (7 in this case, as determined above)
    For i = LBound(a) To UBound(a)
        a(i) = wsCount - i + 1
    Next

    'copies the worksheets
    wb.Worksheets(a).Copy After:=wb.Worksheets(wb.Worksheets.Count)

Просто любопытно, почему вы копируете его в ту же книгу? Если в другую рабочую тетрадь следует указать это в коде

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