Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (32) プログレスバーコントロールを利用する

 
(32) プログレスバーコントロールを利用する

 処理の実行に長時間かかるプログラムがある場合、進捗状況を表すプログレスバーを表示させると便利です。待ち時間のおおよその見当がつき、プログラム使用者のストレスも軽減されることでしょう。

 ここでは、プログレスバーの利用方法を紹介します。

 ユーザフォームを追加します。フォームの名前を「PBarForm」とします。フォームのCaptionも「進捗報告」としましょう。

 フォーム作成用のツールボックスが表示されているか確認します。表示されていない場合は、メニューから[表示(V)] > [ツールボックス(X)] を選択することで表示できます。

 ツールボックス上で右クリックし、表示されるメニューから[その他のコントロール(A)]を選択します。『コントロールの追加』画面が開きます。

 『コントロールの追加』画面にて、「Microsoft ProgressBar Control, version 6.0」を選択して、[OK]ボタンをクリックします。ツールボックスに「ProgressBar」アイコンが追加されます。

 ツールボックスから「ProgressBar」と「コマンドボタン」を選択しフォーム上にドラッグします。「コマンドボタン」の名前を「実行」という名前に変更します。

 フォーム上の[実行]ボタンをダブルクリックします。「CommandButton1_Click」のコードが開きます。

 「CommandButton1_Click」のコードを次のように記載します。「ProgressBar1」のMin、Max、Valueをプログラムで制御するだけです。

 1行目:  Option Explicit
 2行目:  
 3行目:  Private Sub CommandButton1_Click()
 4行目:  
 5行目:      ' マウスポインタを待機状態ポインタに変更する。
 6行目:      Application.Cursor = xlWait
 7行目:      
 8行目:      ' 処理の長さを決める値を定義する。
 9行目:      Const MAX_VALUE As Long = 10
10行目:      
11行目:      ' プログレスバーを初期化する。
12行目:      With Me.ProgressBar1
13行目:          .Min = 0
14行目:          .Max = MAX_VALUE
15行目:          .Value = 0
16行目:      End With
17行目:      
18行目:      ' 処理を行う。
19行目:      Dim lp As Long
20行目:      For lp = 1 To MAX_VALUE
21行目:      
22行目:          ' とりあえず1秒待機する。
23行目:          Application.Wait Now + TimeValue("00:00:01")
24行目:          
25行目:          ' プログレスバーを進める。
26行目:          Me.ProgressBar1.Value = lp
27行目:      
28行目:      Next lp
29行目:  
30行目:      ' 処理の終了を通達する。
31行目:      MsgBox "処理終了", vbOKOnly
32行目:      
33行目:      ' マウスポインタを標準ポインタに戻す。
34行目:      Application.Cursor = xlDefault
35行目:  
36行目:  End Sub

 標準モジュールを一つ追加して、「PBarForm」を開くサブルーチンを作成します。

 1行目:  Option Explicit
 2行目:  
 3行目:  Public Sub Sample_ProgressBar_01()
 4行目:  
 5行目:      ' 「PBarForm」を開く。
 6行目:      PBarForm.Show
 7行目:  
 8行目:  End Sub
 Sample_ProgressBar_01()を実行して、開いたフォームの[実行]ボタンをクリックします。プログレスバーの動作が確認できます。


 終わりが不確定な処理の場合、プログレスバーを用いた進捗状況の表現は難しいかもしれません。プログレスバーのメーターを99%まで進めたら、処理が完結するまで100%表示にならないようにするといった小細工が必要かも?
ページの先頭へ