【问题标题】:VBA - How do I get the worksheet name of the 2nd to the lastVBA - 如何获取第二个到最后一个的工作表名称
【发布时间】:2020-04-30 04:49:45
【问题描述】:

我正在尝试将数据从第二个工作表复制到最后一个工作表并将其粘贴到最后一个工作表,但我不知道如何获取第二个到最后一个工作表的工作表名称:

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

【问题讨论】:

  • 您有(或将有)任何隐藏的床单吗?
  • 你不需要Select你的床单
  • 谢谢你的回答,我不会有任何隐藏的床单

标签: excel vba


【解决方案1】:

要获取倒数第二张的名称,您可以使用:

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

【讨论】:

  • 感谢您的帮助。我还是新手,还在学习,您能解释一下如何更改我的代码吗?在 ** 之间是有错误的地方
  • @nancytran 我用我会这样做的方式更新了代码
  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多