#vba #excel #refresh
#vba #excel #обновить
Вопрос:
У меня есть ячейка в моем листе Excel, и мне нужно, чтобы эта ячейка обновлялась каждые 5 секунд.
Сам MS Excel позволяет настроить обновление, но оно выполняется только каждые 1 минуту, и это недостаточно долго..
Мне нужен некоторый код в VBA или набор макросов, который будет запускаться каждые 5 секунд и делать именно то, что было бы сделано, если бы я нажимал Обновлять каждые 5 секунд, как показано здесь:
Почему-то я не нашел ни одного примера этого, я абсолютно понятия не имею, как это сделать, поскольку я не знаю, как работать в VBA..
Ответ №1:
Вы можете использовать приложение.Время запланировать автоматическое обновление. Создайте приведенную ниже подпрограмму VBA и выполните. Он будет автоматически вычислять ячейку A1 каждые 5 секунд.
Sub UpdateCell()
ActiveWorkbook.RefreshAll
Application.OnTime Now TimeValue("00:00:5"), "UpdateCell"
End Sub
Комментарии:
1. Не работает. Если я нажимаю Выполнить (VBA), ничего не происходит, код, похоже, вообще не запускается..
2. Обновлена ли ваша целевая ячейка в ячейке A1?
3. Да, теперь, похоже, она обновляется (курсор переключается в режим загрузки каждые 5 секунд), но значение в ячейке остается неизменным..
4. Можете ли вы предоставить более подробную информацию о формуле ячейки или о том, чего вы хотите достичь с помощью обновления? Если обновление зависит от щелчка или какого-либо другого события, нам нужно будет по-другому улучшить код.
5. В ячейку загружается простой текст из файла .txt. Это работает, когда я нажимаю кнопку, как показано на рисунке выше.
Ответ №2:
В другом ответе описано, как обновить всю страницу, но парень, задающий вопрос, сказал, что хочет обновить только одну конкретную ячейку.
Вот как обновлять (вычислять) ячейку A1 каждые 5 секунд.
Sub Calculate_Range()
Range("A1").Calculate
Application.OnTime DateAdd("s", 5, Now), "Calculate_Range"
End Sub
Ответ №3:
Понял, теперь это работает:
Sub UpdateCell()
ActiveWorkbook.RefreshAll
Application.OnTime Now TimeValue("00:00:5"), "List1.UpdateCell"
End Sub