[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『モーダレスでメッセージを表示しながら閉じる』(コリアンダ)
[モーダレスでメッセージを表示しながらブックを閉じたい]
マクロでブックを閉じるときに「保存しています」というようなメッセージを出したいのです。モーダレスにするために CloseForm.show 0として次の行にブックを保存するコードを書いたのですが、フォームがきちんと表示されずに、枠とタイトルバーだけ表示された状態で保存が始まってしまいます。表示のための時間が足りないんでしょうか。どうすればいいでしょうか。
Excel2000
Windows2000
>モーダレスにするために モーダルで表示してあるフォームをモーダレスに換えるっちゅうことでっか? unload me か me.hideを先に書かんかったらアカンと思いまんねんけど? で、新たにuserform.show 0 と書いて試してみてくらはい。(色々組み合わせて) (弥太郎)
こんばんは!コリアンダさん! 一応作ってみましたので、後は適当に応用してください。 下に、アップしています。v(=∩_∩=)v Const MyCont = 3000を大きくすれば長くなります。 URLを右くりっくして「対象ファイルを保存してからお試しください。」 (SoulMan) Sub テスト() Const MyCont = 3000 Dim i As Long, MyStr As Long UserForm1.Show vbModeless For i = 1 To MyCont MyStr = i / MyCont * 20 UserForm1.Label1.Caption = String(MyStr, "■") DoEvents Next ThisWorkbook.Saved = True Application.Quit End Sub Private Sub Auto_Close() Unload UserForm1 End Sub http://ryusendo.no-ip.com/cgi-bin/upload/src/up0092.xls
SoulManさんので解決していると思いますが、 プログレスバーについてはマイクロソフトへのリンクが↓にあります。 (ramrun)
[[20030627151504]] 『マクロ実行中から一時中断』(こばちゃん)
おはようございます。 ほめられるとすぐに調子にのるのが私の悪い癖でしてぇ。。 パートつぅを作っちゃいましたぁ(^^;) とかなんとか言いながら自分も使おうかなぁ。と思って それから、私は基本的にマクロの記録をちょこちょこっと編集してる程度の凡人なので 専門的な知識はないんです。( ̄□ ̄;)!! 詳しい技術的なことは他に詳しい先生方が沢山いらっしゃいますのでお任せします。 でも、unloadはした方がいいんじゃないかと個人的には思います。 ではでは、、v(=∩_∩=)v URLを右くりっくして「対象ファイルを保存してからお試しください。」 (SoulMan) Sub テスト() Const MyCount = 10000 Dim i As Long, MyWideA As Single, MyWideB As Single With UserForm1 .Show vbModeless MyWideA = .Image1.Width For i = 1 To MyCount MyWideB = MyWideA * (i / MyCount) With .Image2 .Width = MyWideB If .Visible = False Then .Visible = True End If End With .Label2.Caption = Int(i / MyCount * 100) & "%" .Repaint Next End With ThisWorkbook.Saved = True Application.Quit End Sub Private Sub Auto_Close() Unload UserForm1 End Sub http://ryusendo.no-ip.com/cgi-bin/upload/src/up0093.xls
プログレスバーのような経過を表示させるには、 for〜nextのループ文のような繰り返し処理や段階のある処理 でないと経過は表示できません。
>マクロでブックを閉じるときに「保存しています」というようなメッセージを出したい 保存などの(saveメソッド)1命令による処理で時間がかかる場合には プログレスバーのような経過は表示できないので、 メッセージを表示しておくしかできないですね。
>フォームがきちんと表示されずに、枠とタイトルバーだけ表示された状態で >保存が始まってしまいます。 モーダル、モードレスのどちらでも処理できます。 今回の場合は、メッセージ表示なのでモーダルの方が良いと思います。
Sub sample() UserForm1.Show End Sub
[UserForm1モジュール] Private Sub UserForm_Activate() Me.Repaint ThisWorkbook.Close True End Sub
ユーザーフォーム表示中の処理は、 ユーザーフォームモジュールにコードを記述する方が 分かり易くて良いと思います。
(INA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.