1-27 フォームを再描画するユーザーフォーム 2021.11.16
次の書籍の第1章~5章を公開しています。
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」
【構文】オブジェクト.Repaint
Repaintメソッドは、フォームを再描画します。
マクロの実行中に、コントロールを移動させる処理等は、マクロが終了するまで、表示に反映されない場合があります。
マクロ実行中の任意のタイミングで、フォームに表示を反映したい場合に用います。
次のサンプルコードでは、ラベルコントロールの移動で、再描画の有・無を比較します。
フォームにラベルコントロールを一つ追加した後に、コードを実行してください。ラベルに色を付けるとよりわかりやすいと思います。
サンプルコード①
再描画無しの場合は、コントロール移動中の様子は描画されません。
(アニメーション:3秒ループ)
'///再描画なし/// Private Sub UserForm_Click() Dim i As Long, j As Long, c As Long For i = 0 To 200 For j = 0 To 200 Label1.Top = i Label1.Left = j Next Next For i = 200 To 0 Step -1 For j = 200 To 0 Step -1 Label1.Top = i Label1.Left = j Next Next End Sub
サンプルコード②
再描画有りの場合は、コントロール移動中の様子を確認できます。
(アニメーション:30秒ループ)
'///再描画あり/// Private Sub UserForm_Click() Dim i As Long, j As Long, c As Long For i = 0 To 200 For j = 0 To 200 Label1.Top = i Label1.Left = j Me.Repaint Next Next For i = 200 To 0 Step -1 For j = 200 To 0 Step -1 Label1.Top = i Label1.Left = j Me.Repaint Next Next End Sub
RepaintメソッドのかわりにDoEvents関数を用いることもできます。
動作の安定性ではDoEvents関数が勝り、処理の速さではRepaintメソッドが勝ります。
書籍紹介140以上のサンプルファイル付き!
知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
■ 購入:amazon