У меня есть электронная таблица Excel для отображения диаграмм данных SQL, которые будут отображаться на мониторе в нашем механическом цехе.
В электронной таблице 45 вкладок, и мне нужно переключаться между вкладками с интервалом 10 секунд на вкладку, а затем возвращаться на первую вкладку и повторять цикл.
Как сделать цикл кода бесконечным?
Вот код по ссылке:
Sub StartSlideShow()
Application.OnTime Now + TimeValue("00:00:05"), "ShowNextSheet"
End Sub
Sub ShowNextSheet()
Dim lastIndex As Integer, nextShtIndex As Integer
lastShtIndex = Worksheets.Count
nextShtIndex = ActiveSheet.Index + 1
If nextShtIndex <= lastShtIndex Then
Worksheets(nextShtIndex).Select
StartSlideShow
Else
MsgBox "End of slide show"
End If
End Sub
Да, это правильно. Эта таблица будет работать 24 часа в сутки.
Тогда ответ ниже будет работать, просто не забудьте изменить Application.OnTime Now + TimeValue("00:00:05"), "ShowNextSheet"
на Application.OnTime Now + TimeValue("00:00:10"), "ShowNextSheet"
, так как вы хотите, чтобы изменение происходило каждые 10 секунд.
Код, который вы сейчас используете, проверяет, меньше ли индекс следующего листа, чем последний индекс книги (или равен ему). Если это не так (это означает, что вы просмотрели все свои листы), приложение закрывается. В вашем случае вы не хотите завершать приложение, поэтому в случае, если индекс следующего листа больше, чем последний лист, просто выберите первый лист вручную и перезапустите код.
If nextShtIndex <= lastShtIndex Then
Worksheets(nextShtIndex).Select
StartSlideShow
Else
Worksheets(1).Select
StartSlideShow
End If
Я обновил код, чтобы он выглядел следующим образом: Sub StartSlideShow() Application.OnTime Now + TimeValue("00:00:05"), "ShowNextSheet" End Sub Sub ShowNextSheet() Dim lastIndex As Integer, nextShtIndex As Integer lastShtIndex = Worksheets.Count nextShtIndex = ActiveSheet.Index + 1 If nextShtIndex <= lastShtIndex Then Worksheets(nextShtIndex).Select StartSlideShow Else Worksheets(1).Select StartSlideShow End If End Sub
Он сообщает об ошибке выполнения «1004». Не удалось выбрать метод класса рабочего листа. Говорит, что строка Worksheets(nextShtIndex).Select
является проблемой.
Выяснил, что вызывало ошибку - скрытый лист прерывал последовательность, Отобразил лист, и он начал работать.
@dausfaul Приятно слышать. Скрытые листы выбрать нельзя.
Из любопытства, должно ли «слайд-шоу» работать 24 часа в сутки?