いつもお世話になっております。
表題の件で2つほど質問があります。

 1.実行した時、ブック自体を最小化して、初期値入力用のユーザーフォームだけを画面に表示しようとした所、どうしても、一番前に表示されません。
 何かウィンドウ等が開いていると、ステータスバーのエクセルの表示が点滅するだけで、なんらかのアクションを起こさないと、ユーザーフォームが見えるようになりません。

 2.97ではプログレスバーが使用できないので、ユーザーフォーム上に文字で、
(例えば「処理中です・・・・X/5600」のように表示し、Xをカウントアップする)
経過を知らせたいのですが、いろいろ試行錯誤しましたが、出来ませんでした。

 不特定多数の部署で、不特定の人が使用する可能性があるので、ブックをダブルクリックすると全自動で動作するように運用します。そのような事情なので、上記2つの機能を是非とも組み込みたいのですが、お知恵を拝借出来ませんでしょうか?
 よろしくお願いします。

A 回答 (2件)

プログレスバーは


別にUserFormを作って
UserForm1からボタンで
UserForm2.Show
するなどしてください。


UserFormに、ラベル「Label1」を作って下さい。



Private Sub UserForm_Activate()

With Label1
.SpecialEffect = 2
.BackColor = vbBlue
www = .Width
.Width = 0
End With

For i = 1 To 1000
Me.Caption = i
Label1.Width = i / 1000 * www
Me.Repaint
Next

End Sub


説明が不足の場合は質問ください。
Excel97で確認しました。
ちなみに両方とも本の丸写しなので出典を

(株)秀和システム
Excel2000 VBA 実践プログラミング

いろいろ勉強になります。
良かったら一度目を通してみてください。

この回答への補足

 同じ方に両方のポイントは割り振れないんですね。(苦笑)
残念です。
 また、よろしくお願いします。

補足日時:2002/02/28 15:38
    • good
    • 0
この回答へのお礼

 ありがとうございます!!
実際にプログレスバーを表現できるようにしていただけたとは、オドロキました。
 どうも、BVAは機能が充実し過ぎていて、まだ全体を把握出来ていないようです。まだまだ精進が足りないということですか・・・

Private Sub UserForm_Activate()の使い方を教わったので、理解できているか、応用で、始めに自分で言っていた、X/Y表示を書いて見たところ、上手くいきました。

 実際の処理は、このFor~Nextの間で実行すればいいわけですね。
もしもそれで上手く行かなかった場合、改めて質問させていただくとして、今回はこれで一旦、締め切ります。
 教えていただいた書籍も、是非入手して勉強したいと思います。

 何からなにまで、本当にありがとうございました。

お礼日時:2002/02/28 15:36

新規ブックでテストしてください。


Thisworkbookと
UserFormに以下のものを
貼り付けてください。


Thisworkbookに

Private Sub Workbook_Open()
UserForm1.Show
End Sub




UserFormに

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
End Sub


プログレスバーは作成中です。
    • good
    • 0
この回答へのお礼

 早速の回答、ありがとうございます。

私の試みは、ほとんど正解だったようですが、

>AppActivate "Microsoft Excel"

 というコマンド(?)を知らなかったので、上手く行かなかったようです。
後は、まんま私の書いた記述通りでした。
 大変勉強になりました、ありがとうございます。


>プログレスバーは作成中です。

 次も考えていただいてるんですか。本当に申し訳ありません。
引き続き、よろしくお願いします。

お礼日時:2002/02/28 15:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ