ループが行われている間にイメージが消えて再表示されるようにしようとしています。私はそれを踏んだとき、意図したとおりにコードが動作しますが、私がそれを実行すると、ループが終了するまで画面は更新されません。Excel VBA:ループ中に画面が更新されない
DoEventsとActiveWindow.SmallScrollのようなものを追加しようとしましたが、hereが見つかりましたが、何も動作していないようです。私はこの問題が自分のPC /設定/バージョンの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")) <と一緒に試してみて、スリープとスリープを解除してみませんか? – Vityata
Hey Vityata。残念ながら、私はSleepの代わりにWaitを使用するときに同じ問題を抱えます。また、1秒未満の時間を行うこともできないため、20回のループ処理には長すぎます(20秒間)。しかし、ありがとう。 – Lucas
私はアイディアを持っています。ループ内に1から5000までの数字を表示するdebug.printを置くだけで、画像を見るのに十分な速度のコードを作成できます。 :)寝ることなく、待ってください。それは確かに動作します。 – Vityata