Time Loop в VBA - цикл по столбцам - PullRequest
1 голос
/ 14 июня 2019

Есть два листа (лист1 и лист2).

Необходимо обновлять лист1 каждые 4 минуты, пока рабочая книга открыта.

Затем мне нужно копировать значения из столбца C на листе 1 в столбец C на листе 2 каждые 4 минуты.

Поскольку новые значения будут появляться каждые 4 минуты в sheet1, я хочу, чтобы значения каждый раз копировались в новый столбец в 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 Ответ

1 голос
/ 14 июня 2019

Хотя вы упоминаете, что не можете объявить переменную 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...