アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

フォームモードレス表示を使って進捗を表示させる

フォームモードレス表示を使って進捗を表示させる


  フォームを使用してプログレスバーを表示する方法を紹介します。
  普通はフォームを表示すると実行制御がフォーム側に移ってしまうのですが、
  モードレス表示を使う事で、実行制御が呼び出した側にすぐに戻ります。
  フォームは表示されたままです。
  
  具体的には、
  
      UserForm1.Show vbModeless

  とします。
  モードレス表示は Excel2000以降で可能です。
  

Sub ModelessProgress()

    Dim Max_Scare         As Integer
    Dim i                 As Integer
    Dim WaitTime          As Single
    Dim BarWidth          As Single
    

    Load UserForm1
    
    With UserForm1

        'バー用ラベルの初期設定
        'フレームより1ピクセルずつ内側
        'バーの色を青く設定する
        With .Label3
          .Top = 1
          .Left = 1
          .Width = 0
          .BackColor = &H800000
        End With
  
        BarWidth = .Frame1.Width - 6
  
    End With
    
    'Showメソッドの後に vbModeless を指定
    UserForm1.Show vbModeless
    
    Max_Scare = 100
    
    For i = 1 To Max_Scare
    
        WaitTime = Timer
        While Timer - WaitTime < 1
            DoEvents
        Wend
    
        'プログレスバーの進捗表示を Update
        UserForm1.Label3.Width = BarWidth * i / Max_Scare
        
    Next
    
    Unload UserForm1

End Sub


フォームのモードレス表示を使って進捗表示

  サンプルをダンロードして確認してください。

 




Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.