お世話になっております。
プログレスバーについて教えて下さい。
ユーザーフォームを使いそこにプログレスバーが配置できるとネット上で調べたので使おうと思いました。
ところが・・・ツールボックスにプログレスバーがありません(;゜д゜)ァ....
探してみたのですがどこにも見つかりません。エクセルが壊れているのでしょうか?
また、プログレスバーについてどういう風にやったらできるのかというのを見ていたのですがどう動いているのか理解力が無いため理解が出来ません・・・
下記のようなコードがあり作動している間はバーを動かしたいのですがどうしたらいいでしょうか・・・
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
MyProc r
Next
End Sub
Sub MyProc(Target As Range)
・
・
・
・
・
End Sub
No.3ベストアンサー
- 回答日時:
回答にある
>プログレスバーはEXCELで提供されていたのですね。
は、少し表現について補足したいと思います。
今、私のツールバーでは、プログレスバーのアイコンが出ていますが、過去に下記下記A-2かB-1をやったためと思います。
http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv9g1810. …
のA-2の操作、B-1の操作。
2001,2003で、今まで使ってなければ、出てこないのだと思います(「上記WEBで標準では」という意味)。
マイクロソフトでも他社でも(現実には余りないが)よいが、プログレスバーのコントロールとしてのオブジェクトを提供してくれて、ユーザーが参照設定して(使うという宣言)しまえば、ツールボックスにアイコンが現れるようになります。それをユーザーフォーム上にD&Dすれば(ラベルなどで類似物を自作しないで)使えます。
後はプロパティを設定すればよい。プログラムか操作かどちらかで。
ーー
もうひとつの問題は
ただし上記WEBにある、処理件数 / 総件数 * 100 に当たるものが、質問者の場合何なのかが難しい問題で、分子・分母に来る計数を
何をどう捉えるかがあります。
ーー
さらにもうひとつの問題は
時間が進行し、状況が変化して、表示するタイミングをどう捕まえるかは、そう易しい問題では無いと思うのですが。
ーー
多数のディスク読み込みや、書き込みなどの多件数処理などが時間のほとんどを占めるものは上記WEB上の例のように、考えやすいですが。それでも毎レコード処理するごとに余分な、表示のための処理をしている。
格好よいものですが、難しい点が有ると思う。。
No.2
- 回答日時:
No.1の回答をみて驚きました。
プログレスバーはEXCELで提供されていたのですね。
私は、わざわざ自分で作っていました。
作り方は、ありがちな方法ですが、
バーの部分を、背景を黒で塗りつぶした長方形のテキストラベル
として作っておき、バーのプロパティの幅の値を進捗にあわせて
変化させていく方法です。
見やすいように、枠のテキストラベル
(バーより一回り大きく、幅は固定、へこんだ表示、背景なし)
にバーを重ね合わせて配置してます。
こんな感じでVBAを作りました。(バーの幅は144です。)
Sub test_start()
Dim stepw As Single
Dim pstep As Integer
Dim syori_su As Integer
Dim counter As Integer
'処理件数のセット
syori_su = 10000
'1stepの幅セット
stepw = 144 / 100
'メッセージのセット
progresform.wakulabel.SpecialEffect = fmSpecialEffectSunken
progresform.msglabel.SpecialEffect = fmSpecialEffectRaised
progresform.msglabel.Caption = "処理中です。暫くお待ちください。"
'フォームの表示
progresform.Show (vbModeless)
'処理ループ
For counter = 1 To syori_su
pstep = counter / syori_su * 100
Call progres(stepw, pstep)
Next counter
'フォームの消去
Unload progresform
End Sub
Sub progres(stepw As Single, pstep As Integer)
progresform.persentlabel.Caption = pstep & "%完了"
progresform.barlabel.Width = stepw * pstep
progresform.Repaint
End Sub
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
自分の不注意で仕事で乗り合い...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
EXCEL VBA マクロ 実行する度に...
-
Do~Loopした回数をカウントしたい
-
FFTの結果ついて
-
リョウ・・・量?料?
-
VBA SaveChanges 上書きされない
-
ボタンクリックイベント 重複...
-
2重のDo~Loopは?
-
UMLでの例外処理
-
マルチプロセッシングとマルチ...
-
エクセルVBA マクロ処理中のポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
Do~Loopした回数をカウントしたい
-
VB.NET Excelを読み込んでDataT...
-
月度は何て読みますか?
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
iD
-
VBA SaveChanges 上書きされない
-
Select Case文でこのようなこと...
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
おすすめ情報