Добрый день. Вопрос следующий... В таблицу excel постоянно выгружаются данные из сторонней программы, в день порядка 60 000 строк. Требуется постоянно мониторить последние данные по выгрузке, использую следующий код ручным запуском (т.е. макрос запускаю кнопкой).
Код
Sub Proc()
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
End Sub
Подскажите пожалуйста, возможно автоматизировать запуск данного кода по таймеру (например: раз в секунду)? Ну, или еще как вариант: при заполнении данных из выгрузки в ячейку (например, при заполнении последней пустой ячейки определенного столбца)? Заранее спасибо за помощь!
_Igor_61, спасибо, да макрос работает но, только при внесении данных в таблицу вручную. При выгрузке из сторонней программы к сожалению не работает (курсор не переходит на новую пустую ячейку). Подскажите, где поправить?
Worksheet
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H:H")) Is Nothing Then
Call Proc
End If
End Sub
Module1
Код
Sub Proc()
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
End Sub
radonic, Всеж зависит от задачи и процесса, можно например по мобытию Calculate или Change запускать эту процедуру. То есть после изменения данных сраотает то что вам надо. Нет изменений вам и не надо. Контроль этого,
Цитата
radonic написал: (например, при заполнении последней пустой ячейки определенного столбца)
тоже можно сделать, но нужно где то хранить адрес последней ячейки (строки) для сравнения при изменении.
БМВ написал: ожно например по мобытию Calculate или Change запускать эту процедуру
При получении данных по DDE события change не возникает, а calculate возникнет только, если к этим данным привязана формула, например counta, или summ.
Ребята, поделитесь опытом, пожалуйста, а то ТС у меня спрашивает (#5), а я в макросах не силен Как я понимаю, нужно в какую-то ячейку вставить формулу, чтобы она считала, например, сумму в столбце с выгружаемыми данными, и как только эта сумма в процессе выгрузки будет меняться, будет работать calculate ?
Sub Proc()
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Application.OnTime Now + TimeValue("00:00:05"), "Proc"
End Sub
Private Sub Workbook_Open()
Proc
End Sub
kuklp, спасибо, я предполагал, что на верном пути! Осталось дождаться примера от ТС, чтоб увидеть как (где) и в каком формате получается выгрузка, чтобы правильно привязать формулу. Хотя, может, ему уже удалось решить этот вопрос с помощью OnTime Now + TimeValue. Я вчера пробовал несколько подобных в #11 вариантов, но у меня макрос срабатывал только один единственный раз, при открытии книги, а чтобы он запускался через указанный промежуток времени так и не получилось, наверное, это тоже нужно вешать не на открытие книги, а на другое событие?
Sub Proc() Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Application.OnTime Now + TimeValue("00:00:05"), "Proc"
End Sub
Private Sub Workbook_Open()
Proc
End Sub