トップ > 逆引きで学ぶ ユーザーフォーム&コントロール > 1-27 フォームを再描画する

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

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.