excel - 如何在一天中的特定时间将单元格范围复制到新工作表上的最后一个空行
问题描述
这是我的第一篇文章,所以所有的帮助将不胜感激!
基本上我正在尝试做的事情.. 我想要一个宏在特定时间将包含动态数据(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
再次,非常感谢任何帮助!
解决方案
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
推荐阅读
- plotly-python - 如何将第二个数据集添加到带有绘图注释的热图中?
- kubernetes - 在 Kubernetes 部署中为每个 pod 附加新的 Azure 磁盘卷
- python - 我试图让两个 QFrame 恰好占据 QMainWindow 的一半。抵消被强制,我似乎无法摆脱它
- java - 将一维数组复制到二维数组的一行
- javascript - Webpack:TypeScript 编译中缺少。...在 AngularCompilerPlugin.getCompiledFile
- flutter - 如何模拟点击按钮 Flutter WebView
- php - 使用php将文件从表单上传到s3存储桶
- java - RecyclerView 项目行中的 ProgressBar 未更新
- python - 如何在 python 中创建年同比图
- scala - 使用 MixedVec 在凿子中使用动态参数创建 IO 包