Я пытаюсь сделать изображение исчезающим и вновь появляться во время цикла. Код работает по назначению, когда я его просматриваю, но когда я его запускаю, экран не обновляется до тех пор, пока цикл не будет завершен.Excel VBA: Экран не обновляется во время цикла
Я попытался добавить такие вещи, как DoEvents и ActiveWindow.SmallScroll, как найдено here, но ничего не работает. У меня такое ощущение, что эта проблема может иметь какое-то отношение к моему компьютеру/настройкам/версии Excel и что цикл может работать на некоторых компьютерах людей. Я загрузил sample file here, если вы хотите попробовать.
Мой код:
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub ToggleImage()
For i = 1 To 20
Application.ScreenUpdating = True
ActiveSheet.Shapes("Picture 1").Visible = False
ActiveSheet.Shapes("Picture 2").Visible = True
ActiveSheet.Shapes("Picture 1").Visible = True
ActiveSheet.Shapes("Picture 2").Visible = False
Sleep 50
Next
End Sub
Образец книги прилагается.
Почему бы вам не попробовать с> Application.Wait (Now + TimeValue ("0:00:50")) <и удалить Sleep lib и сон? – Vityata
Эй, Витята. К сожалению, у меня такая же проблема при использовании Wait вместо Sleep. Кроме того, вы не можете сделать время короче 1 секунды, поэтому цикл 20 раз занимает слишком много времени (20 секунд). Спасибо хоть. – Lucas
У меня есть идея - вы можете просто поместить debug.print, который печатает числа от 1 до 5000 в цикле, и это замедлит код, достаточный для просмотра изображений. :) Без сна и ждать. Это будет работать точно. – Vityata