VBA - Как я могу получить имя листа от 2-го до последнего - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь скопировать данные со второго на последний лист и вставить их на последний лист, но не знаю, как получить имя листа со второго до последнего листа:

Public Sub CNPPrevOOS()
' Previous day out of stock items
    Worksheets(**ThisWorkbook.Worksheets(ThisWorkbook.Sheets.Count - 1)**).Select

    c = Worksheets(**ThisWorkbook.Worksheets(ThisWorkbook.Sheets.Count - 1)**).Cells(Rows.Count, 1).End(xlUp).Row

    ' Filters the data where column 2 = x
    ActiveSheet.Range(Cells(1, 1), Cells(c, 2)).AutoFilter field:=2, Criteria1:="x", Operator:=xlFilterValues

    ' Selects only the filtered cells and copy
    Range(Cells(2, 1), Cells(c, 1)).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy

    ThisWorkbook.Worksheets(ThisWorkbook.Sheets.Count).Select
    ActiveSheet.Paste Destination:=Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
End Sub

1 Ответ

0 голосов
/ 29 апреля 2020

Чтобы получить имя от второго до последнего листа, вы можете использовать:

Debug.Print Sheets(Sheets.Count - 1).Name

Реализация этого в вашем коде ( без использования Select) выглядит примерно так это:

Sub Shelter_In_Place()

Dim ws1 As Worksheet, ws2 As Worksheet
Dim lr1 As Long, lr2 As Long

Set ws1 = ThisWorkbook.Sheets(Sheets.Count)       'Last Worksheet
Set ws2 = ThisWorkbook.Sheets(Sheets.Count - 1)   'Second to Last Worksheet

lr1 = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Offset(1).Row
lr2 = ws2.Range("A" & ws2.Rows.Count).End(xlUp).Row

ws2.Range("A1:B" & lr2).AutoFilter Field:=2, Criteria1:="x", Operator:=xlFilterValues

ws2.Range("A2:B" & lr2).SpecialCells(xlCellTypeVisible).Copy
ws1.Range("A" & lr1).PasteSpecial xlPasteValues

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