VBA中的时间循环-遍历各列

时间:2019-06-14 12:12:04

标签: vba

有两张纸(sheet1和sheet2)。

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

然后,我需要每4分钟将工作表1中的C列的值复制到工作表2中的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

1 个答案:

答案 0 :(得分:1)

尽管您提到您不能将变量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