Excel VBA将按整个工作表上的时间间隔将一列中的实时数据复制到下一列中

问题描述 投票:0回答:1

我在为涉及实时时间间隔的项目创建一些vba时遇到麻烦。最初在八年前创建和使用的工作表在去年的Windows更新中消失了。为了我的一生,我一直无法重新创建代码。

我希望在特定的时间间隔内将A列中的数据移至下一列。 A列的实时数据以毫秒为单位变化,我想以设定的时间间隔(例如1分钟)记录该列的数据。

在接下来的1分钟标记处,将A列中的新数据移到B列中,并且将先前在B列中保存的数据粘贴到C列中。在接下来的1分钟标记处,A列中的数据将转到B,B转到C,C转到D,依此类推。

[附上了它在工作表中的外观的模型,A列中的原始数据Feed和每1分钟从Feed中捕获的数据在整个工作表中移动-Data Mockup

我发现的是我开始的一小段代码,可能解释了我试图实现的目标。在2012年为我提供帮助的朋友已经不复存在,但他从这里开始-

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Columns.Count <> 16 Then Exit Sub

    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    Range("b5:b30").Value = Range("b5:b30").Value
    Range("b5:b30").Value = Range("a5:a30").Value

我试图复制/粘贴并更改VBA页面中每一列的`Range'行,但是它不起作用。实际上,我希望可以有一种更简单的方法,而不是为工作表的每一列编写范围线。

感谢您的任何帮助

excel vba real-time
1个回答
0
投票

尝试这个:

Dim i As Long

Sub test()
If i = 0 Then
    i = 1
Else
    i = i + 1
End If

Range("A5:A34").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B3").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B3").Value = "Minute " & i
Application.OnTime Now() + TimeValue("00:01:00"), "test"

End Sub

Sub Reset()
    i=0
End Sub

第一行是声明一个计数器,该计数器将在您每次使用该代码时起作用。一个过程调用test,它将把第一列中的值移到第二列中,并引入标头。一分钟后,它将移动第一列和第二列,依此类推。还有另一个重置计数器的过程。

为了简化操作,只需在标题上方创建2个按钮(例如“运行”和“重置”,然后从此处调用此宏。

如果有任何问题,请告诉我。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.