首页 > 解决方案 > 如何在一天中的特定时间将单元格范围复制到新工作表上的最后一个空行

问题描述

这是我的第一篇文章,所以所有的帮助将不胜感激!

基本上我正在尝试做的事情.. 我想要一个宏在特定时间将包含动态数据(RTD)的一系列单元格(“摘要”表)复制到一个新的工作表(“捕获数据”)。现在,我绝不是 VBA 专家,但我确实有一些编程经验。我也在互联网上进行了一次公平的浏览,下面是我设法挽救的内容,但它不会复制范围内的所有单元格,它只会复制第一个单元格。

这段代码在“ThisWorkbook”对象中,就是按时运行宏:

Private Sub Workbook_Open()
dNextTime = TimeSerial(14, 30, 0)
dNextTime = Date + dNextTime + IIf(Now > (Date + dNextTime), 1, 0)
Application.OnTime dNextTime, "CaptureHeadlines"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime dNextTime, "CaptureHeadlines", Schedule:=False
On Error GoTo 0
End Sub

下面的代码块位于“Module1”文件夹中,用于将单元格范围的内容复制到新工作表中:

Public dNextTime As Double

Sub CaptureHeadlines()

Dim copySheet As Worksheet
Dim pasteSheet As Worksheet

Set copySheet = Worksheets("Summary")
Set pasteSheet = Worksheets("Data capture")

copySheet.Range("B21:O37").Copy
pasteSheet.Range(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial 
Paste:=xlPasteAll

Application.CutCopyMode = False

dNextTime = dNextTime + 1
Application.OnTime dNextTime, "CaptureHeadlines"

End Sub

再次,非常感谢任何帮助!

标签: excelvba

解决方案


OnTime我真的对or一无所知TimeSerial,但你说你的问题是粘贴数据。如果是这种情况,请尝试以下操作。

Sub CaptureHeadlines()

    Dim copySheet As Worksheet
    Dim pasteSheet As Worksheet
    Dim LastRowPasteSheet As Long

    Set copySheet = Worksheets("Summary")
    Set pasteSheet = Worksheets("Data capture")
    LastRowPasteSheet = pasteSheet.Range("A" & Rows.Count).End(xlUp).Row + 1

    copySheet.Range("B21:O37").Copy
    pasteSheet.Range("A" & LastRowPasteSheet).PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False

End Sub

推荐阅读