首页 > 解决方案 > VBA 中的时间循环 - 遍历列

问题描述

有两张纸(sheet1 和 sheet2)。

只要工作簿打开,就需要每 4 分钟刷新一次 sheet1。

然后我需要每 4 分钟将 sheet1 中的 C 列中的值复制到 sheet2 中的 C 列。

由于在 sheet1 中每 4 分钟会出现一次新值,因此我希望每次都将这些值复制到 sheet2 中的新列中。

我正在使用以下代码。我的代码的问题是变量 i 每次都会重新启动,并且我无法使用 Public i 将其启动为模块外部的值。

Sub copyvalues()
Dim i As Long
i = 3

Sheets(2).Columns(i).Value = Sheets(1).Range("C11:C90").Value
i = i + 1

Application.OnTime Now + TimeValue("00:04:00"), "copyvalues"

End Sub

标签: vba

解决方案


尽管您提到不能将变量声明i为 Public,但这应该可以:

例如,以下工作没有问题:

Public i As Long

Sub test()

Debug.Print i

Application.OnTime Now + TimeValue("00:00:01"), "Module1.test"
i = i + 1

End Sub

尝试以下操作:

Public i As Long
Public SubIsRunning As Boolean

Sub initiatesubs()
If Not SubIsRunning = True Then
    i = 3
    Call copyvalues
    SubIsRunning = True
End If
End Sub


Sub copyvalues()

Workbooks(REF).Sheets(2).Columns(i).Value = Workbooks(REF).Sheets(1).Range("C11:C90").Value 

i = i + 1

Application.OnTime Now + TimeValue("00:04:00"), "Module1.copyvalues" 'assuming the sub is in Module1
End Sub

推荐阅读