プログレスバーコントロールで進捗状況を表示するには?

Question 50.5   Previous Next
長時間かかる処理の実行中にユーザーが誤った操作をしないために、進捗状況を画面に表示しておきたいのですが、
手軽に使える方法を教えてください。
Answer   Copyright (C) 2001.12.9 永井善王
プログレスバーコントロール
プログレスバーコントロールを利用すれば、右図のように進捗状況を手軽に表示することが可能になります。
このコントロールはユーザーフォームまたは、ワークシートに作成することができます。
ご利用される場合は、Excel2000以上をお勧めします。
A.ユーザーフォームに作成する方法
ユーザーフォームのコントロールツールボックス
1. コントロールツールボックス
VBE画面でユーザーフォームをデザインするときに、左図のようなツールボックスが表示されます。(プログレスバーコントロールが追加済)
プログレスバーコントロールは標準では表示されないので、使用する前に追加しておきます。

2. ツールボックスへの追加方法
 (1) VBE画面の[ツール]メニュー [その他のコントロール]をクリック
 (2) [Microsoft ProgressBar Control, version 6.0]をチェックして [OK]ボタンをクリック
※マクロを実行するだけのパソコンは、チェックがなくても表示可能

3. プログレスバーコントロールをユーザーフォームに作成する方法
テキストボックスなどの他のコントロールと同様で、ツールボックスの ProgressBarコントロールをクリックするとマウスボインタの形状が変わるので、ユーザーフォーム上に矩形を描くだけです。コマンドボタンなど他のコントロールを、同じユーザーフォームに描いてもかまいません。

4. マクロの作成方法
標準モジュールの通常の業務処理の流れの中に、プログレスバーコントロールに情報を与えるコードを組み込みます。次に一例を示します。
Sub プログレスバーで進捗状況を表示する_ユーザーフォーム()
    総件数 = 10000                            '反復処理する総件数をセットする
    UserForm1.Show                            'ユーザーフォームを表示する
    For 処理件数 = 1 To 総件数              '1から処理を始めて変数「総件数」に達するまで
       ここで必要な処理を行う
        UserForm1.ProgressBar1.Value = 処理件数 / 総件数 * 100
                                              'プログレスバーの値を設定
    Next                                      '繰り返す
    Unload UserForm1                          'ユーザーフォームをメモリから削除する
End Sub
ワークシートのコントロールツールボックス
B.ワークシートに作成する方法

1. コントロールツールボックス
ワークシート画面で、[表示]メニュー[ツールバー]-[コントロールツールボックス]とクリックすると右上図のようなツールボックスが表示されるので、
[コントロールの選択]をクリックして少し待ってから、
コントロールの選択
右下図のように 「Microsoft ProgressBar Control, version 6.0」をクリックするとマウスボインタの形状が変わるので、ワークシート上に矩形を描きます。

サンプルデザインは、
Galleryの「進行案内B」 を参考にしてください。

2. マクロの作成方法
標準モジュールの通常の業務処理の流れの中に、プログレスバーコントロールに情報を与えるコードを組み込みます。次に一例を示します。
Sub プログレスバーで進捗状況を表示する_ワークシート()
    Worksheets("Sheet1").Activate          '「お待ちください」シートをアクティブにする
    総件数 = 10000                           '反復処理する総件数をセットする
    For 処理件数 = 1 To 総件数              '1から処理を始めて変数「総件数」に達するまで
       ここで必要な処理を行う
        ActiveSheet.ProgressBar1.Value = 処理件数 / 総件数 * 100
                                                'プログレスバーの値を設定
    Next                                        '繰り返す
End Sub

プログレスバーコントロールのプロパティ
Excel 2002 および 2000での主なプロパティは次のとおりです。
プロパティ 説明
Appearance 外観を指定する (平面的: 0 - ccFlat, 立体的: 1 - cc3D)
Max 最大値を設定する
Min 最小値を設定する
Orientation 配置する方向(水平: 0 - ccOrientationHorizontal, 垂直: 1 - ccOrientationVertical)
Scrolling スクロール方法(段階的に: 0 - ccScrollingStandard, 滑らかに: 1 - ccScrollingSmooth)
Value 値を設定する
もう少し詳しい説明が 「プログレスバーコントロールのプロパティ一覧」 にあります。

サンプルブックのダウンロード
 
ユーザーフォーム用 (xlsファイル47KB)   ワークシート用 (xlsファイル54KB)
Internet Explorer 4.0以上と、Excel 97以上がインストールされたパソコンでは、サンプルブックを直接、開くことも可能です。しかし、そのまま試すとエラーが出る場合があるので、一旦、ハードディスクに保存してください。

Excel VBA Macro