Доброго времени суток. Никак не могу разобраться в обновление данных по протоколу RTD.
Суть. В Excell получаю данные по RTD путем нажатия обновления F9 с интервалом несколько секунд. Нажимать приходится 4 раза иначе обновляются не все данные. При попытке сделать макрос VBA, делающий это за меня, обновление работает, как при однократном нажатии F9, т.е. в результате обновляются не все данные.
Пробовал задержки выполнения в разных интерпритациях: sleep Application.Wait Time
не помогло
Есть ли какое-то красивое решение данной проблемы?
Доброго времени суток. Никак не могу разобраться в обновление данных по протоколу RTD.
Суть. В Excell получаю данные по RTD путем нажатия обновления F9 с интервалом несколько секунд. Нажимать приходится 4 раза иначе обновляются не все данные. При попытке сделать макрос VBA, делающий это за меня, обновление работает, как при однократном нажатии F9, т.е. в результате обновляются не все данные.
Пробовал задержки выполнения в разных интерпритациях: sleep Application.Wait Time
не помогло
Есть ли какое-то красивое решение данной проблемы?virtuoz
Апострофф, попробовал в нескольких видах. обновляет только один раз даже в таком варианте:
[vba]
Код
Sub LoadRTD()
Sheets("Loader").Select ActiveSheet.Calculate
End Sub
Sub LoadRTD4()
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
End Sub
[/vba]
Апострофф, попробовал в нескольких видах. обновляет только один раз даже в таком варианте:
[vba]
Код
Sub LoadRTD()
Sheets("Loader").Select ActiveSheet.Calculate
End Sub
Sub LoadRTD4()
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD" Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума Решил, завершает сам себя при отсутствии ошибок в обновлении данных, обычно 3х раз хватало. Количество ошибок Берется из ячейки J6
[vba]
Код
Sub LoadRTD()
Sheets("Loader").Select ActiveSheet.Calculate If Range("J6") = 0 Then End Call LoadRTD4 End Sub
Sub LoadRTD4() Application.OnTime Now + TimeValue("00:00:01"), "LoadRTD" End Sub
[/vba]
Еще раз спасибо!
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума Решил, завершает сам себя при отсутствии ошибок в обновлении данных, обычно 3х раз хватало. Количество ошибок Берется из ячейки J6
[vba]
Код
Sub LoadRTD()
Sheets("Loader").Select ActiveSheet.Calculate If Range("J6") = 0 Then End Call LoadRTD4 End Sub
Sub LoadRTD4() Application.OnTime Now + TimeValue("00:00:01"), "LoadRTD" End Sub
Я так понимаю он сам на себя на вечно зациклен через Call
Дело не в операторе Call. Функцию и процедуру без параметров (или с одним параметром) можно вызвать и без этого оператора. Это обычный вызов процедуры "LoadRTD4". Просто мы каждый раз после выполнения процедуры подписываемся на её выполнение снова.
Я так понимаю он сам на себя на вечно зациклен через Call
Дело не в операторе Call. Функцию и процедуру без параметров (или с одним параметром) можно вызвать и без этого оператора. Это обычный вызов процедуры "LoadRTD4". Просто мы каждый раз после выполнения процедуры подписываемся на её выполнение снова.Roman777