MS Excel — Как автоматически обновлять ячейку каждые 5 секунд?

#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