Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


60242 / 76736 ←次へ | 前へ→

【21136】Re:プログレスバーの使い方について教えてください!
発言  ichinose  - 05/1/12(水) 19:25 -

引用なし
パスワード
   ▼sa さん、IROCさん
こんばんは。

>こんにちは。
>今、エクセル上で複数のファイルの内容を集計する
>マクロを作っているのですが、
>処理を実行する際に、プログレスバーを使用して
>処理状況を表示させたいと考えています。
>
>いろいろ調べたのですが、
>ユーザーフォームを使用するのではなく、
>シート状に直接プログレスバーを埋め込む(?)処理を
>行う方法がわからず困っています。

シートに動的にプログレスバーを配置すると言う事ですか?
配置する事は、「コントロールツールボックス」の「コントロールの選択」という
アイコンをクリックし、その中から「Microsoft ProgressBar Control・・」を
選択して、シートに配置する操作をマクロの記録を行えば、コードは生成されます。

マクロの記録を使えば(加工はしましたが)、
'==================================================
Sub add_progressbar()
  Dim rng As Range
  Dim prog As OLEObject
  Set rng = ActiveCell
  With ActiveSheet
   Set prog = .OLEObjects.Add(ClassType:="MSComctlLib.ProgCtrl.2", _
           Left:=rng.Left, Top:=rng.Top, _
           Width:=rng.Width, Height:=rng.Height)
   prog.Object.Value = 50
   End With
End Sub

なんていうコードで配置する事が出来ます(例は、アクティブセルに合わせて
プログレスバーを配置しました)。

が・・・・、

私も以前、ここで勉強させてもらったのですが、「コントロールツールボックス」の
オブジェクトを動的に配置するのは、いくつかの問題があるようです。
(モジュールレベルの変数が初期化されてしまう)
確認はしていませんが、他にもあるかもしれません。

よって、VBAによる動的な配置は避けた方がよいかもしれませんよ。

予め上記の方法でプログレスバーをシートに配置しておいて、
必要に応じて、
VisibleプロパティのTrue/Falseの設定で表示/非表示にしては
いかがでしょうか?

0 hits

【21117】プログレスバーの使い方について教えてください! sa 05/1/12(水) 14:08 質問
【21119】Re:プログレスバーの使い方について教えて... IROC 05/1/12(水) 14:19 回答
【21136】Re:プログレスバーの使い方について教えて... ichinose 05/1/12(水) 19:25 発言

60242 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free