【问题标题】:Copy most recent/last sheets in excel在excel中复制最近/最后一张表
【发布时间】:2020-05-04 21:03:23
【问题描述】:

我正在尝试创建一个按钮来复制我最近的 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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    不是最优雅的解决方案,但应该这样做

    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)
    

    只是好奇,你为什么将它复制到同一个工作簿?如果到另一个工作簿,您应该在代码中规定

    【讨论】:

    • 感谢 jblack。这是一个进度估计,每个月都会复制 7 页,因此我们将所有内容保存在同一个工作簿中。
    • 一切都好。上面的代码能回答你的问题吗?如果是这样,请将其标记为已回答:)
    猜你喜欢
    • 2016-02-16
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多