すぐマク YNxv9a62 Home | Search | Contents | Gallery | Introduction | Service | Support | What's New!
進捗状況プログレスバーのマクロを応用するには? Click Here! Click Here!
Question 49.10 メッセージ Previous Next
詳細は こちら 500連発・第2弾マクロ番号 183と184の進捗表示について質問します。
... Application.FileSearch のような、検索時に表示させたいと思うのですが、 For...Next の間にネストしても巧く動きません。
どのように実際のマクロに応用するのでしょうか。Excel 2000を使用しています。
Answer   Copyright (C) 2001.11.13 Yoshioh Nagai
183番は「進捗状況をプログレスバ−で表示する(ラベル)」、
184番は「進捗状況をプログレスバ−で表示する(テキストボックス)」と題するマクロで、井領邦弘氏の作品ですが、500連発・第2弾の監修担当の私宛に質問されましたので、とりあえずお答えします。
より以上の回答が必要でしたら直接、作者にご照会 願います。

ユーザーフォーム この 2つのマクロは、ユーザーフォームに進捗状況を表示するためのプログレスバーを作成するサンプルです。
主な相違は、183番はラベルコントロールを利用(右図)、184番はテキストボックスを利用していることで、これによりプログレスバーの外観が異なり、マクロコードも少し変ります。
逆に共通点としては、For...Next でループ処理を実行中、次の繰り返しに移るタイミングを捉えてバーを伸ばしていることです。
回答に入ります。2つともマクロの中に、次のようなコードがあります。
For i = 1 To cend
    (省略:バーを伸ばす処理)
'     ----------------------------------------------------
      For j = 1 To 10000
        'デバッグ用タイミング(実際はここに実行マクロを入れる)
      Next
     '-----------------------------------------------------
     DoEvents
Next
あなたが希望される Application.FileSearch を入れるとすれば、上記ライン間の 3行を書き換えることになるでしょう。FileSearchプロパティ は指定されたフォルダ等から指定されたファイルを検索してくれますが、フォルダの代わりにドライブを指定すると相当、時間がかかる場合があります。 そのため、進捗状況を表示することによってイライラ感を和らげたいと思われたのでしょうが、ちょっとした無理があるかも知れません。

その理由は作者もコメントしているとおり、これらのマクロが For...Next の変数 i の値で %を算出してバーを伸ばす手法を採用しているため、 1回の FileSearch に長時間かかったとしても、反復回数としてはあくまで 1回ですから、バーが伸びないことになります。 ただし、For...Next するたびに検索するフォルダ等を変えて FileSearch するならば、活用できるかも知れません。
http://www.geocities.jp/happy_ngi/ Home | Contents | Gallery | Introduction | Service | Support | What's New!

Click here to visit our sponsor