描画の過程を表示させない

プログラミングの処理中にその実行過程の画面を見せたくない場合があります。
結果だけを表示させるので、画面のチラツキがなくなり、ユーザーのとまどいがなくなります。
実行過程が長い場合は、フリーズかと思われるのでプログレスバーや「現在実行中です。しばらくお待ちください。」等のメッセージを表示させておく必要があります。

描画を停止させるには
Application.ScreenUpdating = False
描画させるには
Application.ScreenUpdating = true
の構文で切り替えます。

Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ



実行画面

「描画の過程を非表示」ボタンをクリックすると、最終画面の下画像が表示されます。
右方向の矢印シェイプが完成

「描画の過程を表示」ボタンをクリックすると、下画像のように矢印シェイプが徐々に回転しているのを見ることができます。
矢印シェイプを180度回転

実行VBAコード

'Windowsが起動してからの経過時間 API
Private Declare Function GetTickCount Lib "kernel32" () As Long

'mSecタイマー
Private Sub ExTimer(tim As Long)
    Dim st As Long
    
    '開始時間を取得
    st = GetTickCount
    DoEvents
    Do
        If GetTickCount - st >= tim Then
            '時間が経過した
            Exit Do
        End If
        DoEvents
    Loop
End Sub

'テスト用にオートシェイプを作成し回転させる
Private Sub ExShapeMake()
    Dim tshape As Shape
    Dim i As Double
    
    '元の図形を作成
    With ActiveSheet.Range("B7:E14")
        Set tshape = ActiveSheet.Shapes.AddShape(Type:=msoShapeLeftArrow, _
        Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
            
        '180度まで徐々に回転
        For i = 1 To 180
            '100mSecタイマー
            ExTimer 10
            '1度回転
            Call tshape.IncrementRotation(1)
        Next
    
    End With
    Set tshape = Nothing
End Sub

'描画の過程を表示
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = True
    ExShapeMake
End Sub

'描画の過程を非表示
Private Sub CommandButton2_Click()
    Application.ScreenUpdating = False
    ExShapeMake
    Application.ScreenUpdating = True
End Sub

Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved