Sleep関数は文字通り「スリープ」させる命令で、指定ミリ秒数分の時間Excelをストップさせることができます。
Excelの関数ではなくWindows自体のAPIを使用するので、頭にAPI使う旨宣言する必要があります(要するに決まった文章入れれば動きます)。Macでの使い方はわかったら追記します。
Sleep関数の使い方とAPIの宣言
![sleep1](https://sunagitsune.com/wp-content/uploads/2021/02/sleep1.jpg)
構文そのものはSleep 値(1/1000秒単位)とはなはだシンプルですが、
![sleep2](https://sunagitsune.com/wp-content/uploads/2021/02/sleep2.jpg)
これだけだと「Sleepなどという命令は知らない」というエラーが出ます。
![sleep3](https://sunagitsune.com/wp-content/uploads/2021/02/sleep3.jpg)
SleepはWindows APIの関数なので、使う旨記述する必要があります。
Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)と記述します。
Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)と記述します。
![sleep4](https://sunagitsune.com/wp-content/uploads/2021/02/sleep4.jpg)
今書いたのは32bit版のExcelで使える宣言ですが、もしこういったエラーがさらに出るようなら使ってるExcelは64bit版なので、
![sleep5](https://sunagitsune.com/wp-content/uploads/2021/02/sleep5.jpg)
Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)に修正します。PtrSafeがSubの前に入っただけです。
![sleep6](https://sunagitsune.com/wp-content/uploads/2021/02/sleep6.jpg)
宣言が有効な状態で実行すると、指定時間Excelが停止します。
アニメーションさせたい場合
' vba
Sub 右回転()
For i = 1 To 36
ActiveSheet.Shapes("kao").IncrementRotation 10
Sleep 10
Next
End Sub
Excelは基本的にひとつの仕事に集中した後、その結果をまとめて表示したがります。
たとえばここでは図形を右回転させる命令を細かくsleepで区切って実行することで、簡単なアニメーションを実装しようとしていますが、
たとえばここでは図形を右回転させる命令を細かくsleepで区切って実行することで、簡単なアニメーションを実装しようとしていますが、
![doevents](https://sunagitsune.com/wp-content/uploads/2021/02/doevents.png)
実行してもうんともすんとも言いません。こういう場合は、
' vba
Sub 右回転()
For i = 1 To 36
ActiveSheet.Shapes("kao").IncrementRotation 10
Sleep 10
DoEvents
Next
End Sub
Nextの前にDoEventsという命令を入れてみてください。
![face rotation](https://sunagitsune.com/wp-content/uploads/2021/02/face-rotation.gif)
万能薬ではないですが、処理を行った後DoEventsのたびに結果を表示してくれるようになるので、状況が改善される可能性が高いです。
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
コメント