Excel VBA質問箱 IV

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

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


7137 / 13645 ツリー ←次へ | 前へ→

【40850】プログレスバーについて NANA 06/7/25(火) 10:48 質問[未読]
【40855】Re:プログレスバーについて Jaka 06/7/25(火) 11:48 発言[未読]
【40861】Re:プログレスバーについて ハト 06/7/25(火) 13:40 回答[未読]
【40866】Re:プログレスバーについて NANA 06/7/25(火) 14:47 発言[未読]
【40905】Re:プログレスバーについて inoue 06/7/25(火) 23:16 発言[未読]
【40924】Re:プログレスバーについて ハト 06/7/26(水) 12:01 発言[未読]
【40926】Re:プログレスバーについて inoue 06/7/26(水) 13:29 発言[未読]
【40929】Re:プログレスバーについて ハト 06/7/26(水) 13:57 発言[未読]
【40960】Re:プログレスバーについて inoue 06/7/26(水) 21:20 発言[未読]
【40964】Re:プログレスバーについて neptune 06/7/27(木) 8:15 発言[未読]
【40982】Re:プログレスバーについて ハト 06/7/27(木) 11:19 発言[未読]
【40983】Re:プログレスバーについて 角田 06/7/27(木) 11:37 発言[未読]

【40850】プログレスバーについて
質問  NANA  - 06/7/25(火) 10:48 -

引用なし
パスワード
   プログレスバーは基本的にループ処理の中で使うものだということですが、それ以外で使用することはできるのでしょうか?
今のプログラムの構造は以下の通りで、処理に時間がかかるのでプログレスバーを表示させたいのですが…

Sub main()
 処理1
 ・
 ・
 ・
 処理2(サブルーチン)
 処理3(サブルーチン)
 処理4(サブルーチン)
End Sub

プログラム構造詳細は書きませんが、処理1が始まった時に0%、処理2が始まったら25%、処理3開始で50%、処理4開始で75%、main処理終了で100%とこのように使用することはできないでしょうか?
今はとりあえずステータスバーに「処理中」を表示させることで回避しているのですが、何かいい方法があればおしえていただけるとありがたいです。
よろしくお願い致します。

【40855】Re:プログレスバーについて
発言  Jaka  - 06/7/25(火) 11:48 -

引用なし
パスワード
   例えばだけど、
同じ大きさのラベルを2枚重ねておく。
下のラベルの色を白にし、Label1とする。
上のラベルの色を青にし、Label2とする。

Private Sub UserForm_Initialize()
  Call prgb(0)
End Sub

Private Sub CommandButton1_Click()
  処理1
  Call prgb(0.25)
  処理2
  Call prgb(0.5)
  処理3
  Call prgb(0.75)
  処理4
  Call prgb(1)
End Sub

Private Sub prgb(NN As Single)
  If NN = 0 Then
    wd = NN
  Else
    wd = Label1.Width * NN
  End If
  Label2.Width = wd
End Sub

Sub 処理1()
MsgBox "処理1"
End Sub

Sub 処理2()
MsgBox "処理2"
End Sub

Sub 処理3()
MsgBox "処理3"
End Sub

Sub 処理4()
MsgBox "処理4"
End Sub

【40861】Re:プログレスバーについて
回答  ハト  - 06/7/25(火) 13:40 -

引用なし
パスワード
   おはようございます

▼NANA さん:
>プログレスバーは基本的にループ処理の中で使うものだということですが、それ以外で使用することはできるのでしょうか?
>今のプログラムの構造は以下の通りで、処理に時間がかかるのでプログレスバーを表示させたいのですが…
>
>Sub main()
> 処理1
> ・
> ・
> ・
> 処理2(サブルーチン)
> 処理3(サブルーチン)
> 処理4(サブルーチン)
>End Sub
>
>プログラム構造詳細は書きませんが、処理1が始まった時に0%、処理2が始まったら25%、処理3開始で50%、処理4開始で75%、main処理終了で100%とこのように使用することはできないでしょうか?
>今はとりあえずステータスバーに「処理中」を表示させることで回避しているのですが、何かいい方法があればおしえていただけるとありがたいです。
>よろしくお願い致します。

プログレスバーコントロールを使うやり方です

1.プログレスバーを表示するFormを作る
2.ツール→その他のコントロールを選択
  一覧の中の『Microsoft ProgressBar Control』にチェックを入れる
3.ツールボックスに『ProgressBar』コントロールが出るので
  Formにそれを貼り付ける

Sub main()
 
 UserForm1.Show vbModeless
 UserForm1.ProgressBar1.Value = 0
 DoEvents
 処理1
 ・
 ・
 ・
 UserForm1.ProgressBar1.Value = 25
 DoEvents
 処理2(サブルーチン)

 UserForm1.ProgressBar1.Value = 50
 DoEvents
 処理3(サブルーチン)

 UserForm1.ProgressBar1.Value = 75
 DoEvents
 処理4(サブルーチン)

 UserForm1.ProgressBar1.Value = 100
 DoEvents

End Sub

【40866】Re:プログレスバーについて
発言  NANA  - 06/7/25(火) 14:47 -

引用なし
パスワード
   ▼ハト さん:
こんにちは。
さっそくいただいたコードを試してみました。

ただどこでプログレスバーの値を上げるかが問題ですね。
今回処理1は他の処理に比べて時間がかかります。
(処理1の中にもサブルーチンがあることを忘れていました。)
このあたりをうまく解消すればできそうです。

ありがとうございました。

【40905】Re:プログレスバーについて
発言  inoue E-MAILWEB  - 06/7/25(火) 23:16 -

引用なし
パスワード
   念のためですが。

> 一覧の中の『Microsoft ProgressBar Control』にチェックを入れる
これはOfficeからインストールされるものではないので
ライセンス問題が発生します。

個人的な「お楽しみ」以外には使わない方が良いと思います。

【40924】Re:プログレスバーについて
発言  ハト  - 06/7/26(水) 12:01 -

引用なし
パスワード
   ▼inoue さん:
>念のためですが。
>
>> 一覧の中の『Microsoft ProgressBar Control』にチェックを入れる
>これはOfficeからインストールされるものではないので
>ライセンス問題が発生します。
>
>個人的な「お楽しみ」以外には使わない方が良いと思います。

この件ですが

MSCOMCTL.OCX

を使用しています。
これはOffice2000以降では付属されていますので
Office2000以降の環境ならば自由に使えると聞いていました

しかし、マシンの環境によってはライセンス問題が発生するのですね
以後注意いたします

inoue さん、ありがとうございました

【40926】Re:プログレスバーについて
発言  inoue E-MAILWEB  - 06/7/26(水) 13:29 -

引用なし
パスワード
   >MSCOMCTL.OCX
>を使用しています。
>これはOffice2000以降では付属されていますので
>Office2000以降の環境ならば自由に使えると聞いていました
どうやって確認されましたか?
相反する情報を得ているなら確認すべきではないですか?

http://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm#J4
ここにも記載されていますが、Officeではなく
言語ソフトのVisualBasicのコントロールです。
OfficeからインストールされるOCXはOfficeフォルダにインストールされます。

試しにOffice2000ProfessionalEditionのCD-ROMを検索しましたが、OCXは、
HHCTRL.OCX
SNAPVIEW.OCX
ASFCHOP.OCX
MSBCODE9.OCX
MSCAL.OCX
OUACTRL.OCX
EYEDOG.OCX
MSIAV.OCX
MSICDROM.OCX
MSIHWNFO.OCX
MSIOFF9.OCX
MSIOLERG.OCX
MSIPRINT.OCX
MSISYS.OCX
TXTVIEW.OCX
FPATL.OCX
HTMLMARQ.OCX
HTMLMM.OCX
だけですね。

*COMCTL*については「COMCTL32.DLL」は見つかりますが、
これはOCXではなくフォーム上では利用できないものです。
それとも貴方のOfficeはDeveloperEditionですか?

正規にインストールしていないのにOCXが存在するのは
他のアプリケーションをインストールした時に
ランタイムとしてインストールされたと考えられます。
ランタイムは実行時にライセンスであり、他にデザイン利用することは
できないということです。

当方は別にライセンスを監視するような立場ではないのでこれまでにしますが、
ライセンスの問題以外にも、これを利用したブックは他のPCに配布すると
配布先の環境で動かないことがあるということもお忘れ無く。

プログレスバーのようなものは通常のユーザーフォームのコントロールを
組み合わせれば実現できるもので、危ない橋を渡る必要はないと思います。
[「プログレスバー」のクラス]
http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_020.html

【40929】Re:プログレスバーについて
発言  ハト  - 06/7/26(水) 13:57 -

引用なし
パスワード
   ▼inoue さん:
>>MSCOMCTL.OCX
>>を使用しています。
>>これはOffice2000以降では付属されていますので
>>Office2000以降の環境ならば自由に使えると聞いていました
>どうやって確認されましたか?
>相反する情報を得ているなら確認すべきではないですか?
>
>http://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm#J4
>ここにも記載されていますが、Officeではなく
>言語ソフトのVisualBasicのコントロールです。
>OfficeからインストールされるOCXはOfficeフォルダにインストールされます。
>
>試しにOffice2000ProfessionalEditionのCD-ROMを検索しましたが、OCXは、
>HHCTRL.OCX
>SNAPVIEW.OCX
>ASFCHOP.OCX
>MSBCODE9.OCX
>MSCAL.OCX
>OUACTRL.OCX
>EYEDOG.OCX
>MSIAV.OCX
>MSICDROM.OCX
>MSIHWNFO.OCX
>MSIOFF9.OCX
>MSIOLERG.OCX
>MSIPRINT.OCX
>MSISYS.OCX
>TXTVIEW.OCX
>FPATL.OCX
>HTMLMARQ.OCX
>HTMLMM.OCX
>だけですね。
>
>*COMCTL*については「COMCTL32.DLL」は見つかりますが、
>これはOCXではなくフォーム上では利用できないものです。
>それとも貴方のOfficeはDeveloperEditionですか?
>
>正規にインストールしていないのにOCXが存在するのは
>他のアプリケーションをインストールした時に
>ランタイムとしてインストールされたと考えられます。
>ランタイムは実行時にライセンスであり、他にデザイン利用することは
>できないということです。
>
>当方は別にライセンスを監視するような立場ではないのでこれまでにしますが、
>ライセンスの問題以外にも、これを利用したブックは他のPCに配布すると
>配布先の環境で動かないことがあるということもお忘れ無く。
>
>プログレスバーのようなものは通常のユーザーフォームのコントロールを
>組み合わせれば実現できるもので、危ない橋を渡る必要はないと思います。
>[「プログレスバー」のクラス]
>http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_020.html

こちらの記述と相反するようですね
http://officetanaka.com/patio/patio.cgi?p=20
自分で調査してみます

当方のOfficeはOffice2000ProfessionalEditionです
VB,RUNTIME等のINSTALLは行っていません

ありがとうございました

【40960】Re:プログレスバーについて
発言  inoue E-MAILWEB  - 06/7/26(水) 21:20 -

引用なし
パスワード
   >こちらの記述と相反するようですね
>http://officetanaka.com/patio/patio.cgi?p=20
>自分で調査してみます
Developer Editionのことを回答されているということはないでしょうか。
通常のOfficeからインストールされる必然性が分かりません。
その機能の説明はどこにもないと思います。

>当方のOfficeはOffice2000ProfessionalEditionです
>VB,RUNTIME等のINSTALLは行っていません
是非、Officeのインストール前に「MSCOMCTL.OCX」がないことを
確認して下さい。
他でVisualStudioを使って作成されているアプリがあると
それでインストールされてしまいます。ランタイムですが。

【40964】Re:プログレスバーについて
発言  neptune  - 06/7/27(木) 8:15 -

引用なし
パスワード
   ▼inoue さん:
横から失礼します。

「MSCOMCTL.OCX」の件ですが、MSDNで御調べいただいたら分かりますが、
Officeのバージョンによって、初期のインストール時若しくはSPを当てる際に
「MSCOMCTL.OCX」もインストールされます。

勿論、こういったものは再頒布は出来ませんが、正規にインストールされた環境で
使用するにはライセンス上問題はありません。

ハトさんへ>
※ExcelBookのみを配布した場合、マシンの環境により参照設定などで、
問題が生じる可能性はあります。開発ライセンスを持たない場合は、inoue さん
のおっしゃるようにExcelの持つ材料の範囲内で設計すべきです。

【40982】Re:プログレスバーについて
発言  ハト  - 06/7/27(木) 11:19 -

引用なし
パスワード
   おはようございます

>「MSCOMCTL.OCX」の件ですが、MSDNで御調べいただいたら分かりますが、
>Officeのバージョンによって、初期のインストール時若しくはSPを当てる際に
>「MSCOMCTL.OCX」もインストールされます。
>
>勿論、こういったものは再頒布は出来ませんが、正規にインストールされた環境で
>使用するにはライセンス上問題はありません。
>
>ハトさんへ>
>※ExcelBookのみを配布した場合、マシンの環境により参照設定などで、
>問題が生じる可能性はあります。開発ライセンスを持たない場合は、inoue さん
>のおっしゃるようにExcelの持つ材料の範囲内で設計すべきです。

昨日、inoue さんにご指摘をいただいたように
個人のお楽しみ以外では使用しないように心がけます

neptune さん、inoue さん
いろいろとありがとうございました

【40983】Re:プログレスバーについて
発言  角田 WEB  - 06/7/27(木) 11:37 -

引用なし
パスワード
   こんにちは。
>「MSCOMCTL.OCX」の件ですが、MSDNで御調べいただいたら分かりますが、
>Officeのバージョンによって、初期のインストール時若しくはSPを当てる際に
>「MSCOMCTL.OCX」もインストールされます。
VBが入っていなくて「Office2000 Personal SP-3」のみの
パソを覗いてみたら確かにインストールされてますね。
知らなかった〜
MSCOMCTL.OCXの中の「どれか」をOffice自体も必要としてるって事
なんでしょうね。もしプログレスバーだったら、ブック読み込み時に
ステータスバーにでる奴とかで使ってるのかな?

σ(^◇^;)の記事の注意書、修正しておきます。

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