gpt4 book ai didi

excel - 动态 RTD 数据记录到另一张表

转载 作者:行者123 更新时间:2023-12-04 20:09:54 26 4
gpt4 key购买 nike

当数据从 C4:C7 列的范围呈现时,此代码可以正常工作,但是我的工作表是使用 C4:K4 的一行中的数据设置的。我不能得到一行而不是一列来解决。有什么帮助吗?谢谢 view pic with issue .

Sub RecordData()
Dim Interval As Double
Dim cel As Range, Capture As Range
Interval = 30 'Number of seconds between each recording of data
Set Capture = Worksheets("Sheet1").Range("C4:K4") 'Capture this row of data
With Worksheets("Sheet2") 'Record the data on this worksheet
Set cel = .Range("A2") 'First timestamp goes here
Set cel = .Cells(.Rows.Count, cel.Column).End(xlUp).Offset(1, 0)
cel.Value = Now
cel.Offset(0, 1).Resize(1, Capture.Cells.Count).Value = Application.Transpose(Capture.Value)
End With
NextTime = Now + Interval / 86400
Application.OnTime NextTime, "RecordData"
End Sub

最佳答案

转调 Capture.Value是问题;您不需要这样做,因为目标范围和源范围具有相同的形状。

建议:避免通过 Excel 选项卡上显示的名称来引用工作表。这些名称通常会随着时间而改变,并会导致您的代码中断。例如,With Worksheets("Sheet2")...只要将 Sheet2 的名称更改为其他名称,就会失败并出现错误 9“下标超出范围”。

您可以为工作表指定一个稳定的“内部”名称,并直接在 VBA 代码中使用它,只要所述 VBA 代码与工作表位于同一工作簿中即可。我所指的工作表属性称为 CodeName .您可以通过单击项目资源管理器中的工作表从 Visual Basic 编辑器中设置它,然后在属性窗口中分配给 (Name) 属性,如下所示,其中我已将 CodeName“SourceWs”分配给名为从 Excel 中看到的“源工作表”:

enter image description here

然后,您的代码可以重写为:

Option Explicit

Sub RecordData()
Dim Interval As Double
Dim cel As Range, Capture As Range
Dim NextTime As Date

Interval = 30 'Number of seconds between each recording of data

Set Capture = SourceWs.Range("C4:K4") 'Capture this row of data

With DestWs 'Record the data on this worksheet
Set cel = .Range("A2") 'First timestamp goes here
Set cel = .Cells(.Rows.Count, cel.Column).End(xlUp).Offset(1, 0)
cel.Value = Now
cel.Offset(0, 1).Resize(1, Capture.Cells.Count).Value = Capture.Value
End With

NextTime = Now + Interval / 86400
Application.OnTime NextTime, "RecordData"
End Sub

至于您关于培训视频的问题,请尝试谷歌搜索 excel mvp blog你会发现比你能处理的更多。玩得开心。

关于excel - 动态 RTD 数据记录到另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53786468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com