プロが教える店舗&オフィスのセキュリティ対策術

いつもPowerpoint用のマクロを一つのファイルにまとめ、ツールバーに実行用のボタンを追加して使用しています。マクロファイルは閉じたままにしています。
このたびUserFormをModalからModelessに修正し、マクロを実行しましたらFormが表示されませんでした。マクロファイルを開いたまま実行するときちんと表示されます。また、UserFormがModalの時はマクロファイルを閉じたままでもきちんと表示されていました。

マクロが保存されているファイルを閉じたままでもModelessでUserFormを表示する方法がありましたら教えてください。

ちなみに、現在はこのようなスクリプトになっています。
Load frmXXX
frmXXX.Show vbModeless
(frmXXX.Showだけの時はきちんと表示されていました)

ご回答お待ちしております。

A 回答 (1件)

 確かにファイルを開いていないと


一瞬でユーザーフォームが消えますね。
Application.Run を使ってもだめ。
Excelとはまったく違う動作です。
でも、それほど困ることはないのと思うのですが。
モーダルでも、その間PowerPointの編集ができない
だけで、ExcelやWordには切り替えられるので。

 どうしてもモードレスでというのなら、
以下のような方法があるかもしれません。

●標準モジュール
Public myFlg As Boolean
Sub test()
UserForm1.Show vbModeless
Do Until myFlg = True
DoEvents
Loop
End Sub

●UserForm1
Private Sub CommandButton1_Click()
Me.Hide
MsgBox "OK"
myFlg = True
Unload Me
End Sub
Private Sub UserForm_Terminate()
myFlg = True
End Sub

※ループの間の動作がもたつくときは、
●標準モジュール
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public myFlg As Boolean
Sub test2()
UserForm1.Show vbModeless
Do Until myFlg = True
Sleep (500) '←数字調整
DoEvents
Loop
End Sub

この回答への補足

ご丁寧なご助言どうもありがとうございました。実はModelessでUserFormが開いている間にPowerpoint上で特定の操作をユーザーにしてもらい、それが終了した段階でUserFormのOKを押してもらう、ということをしたかったのでした。
ご提案いただいた方法を利用して試してみます。

補足日時:2008/11/05 10:27
    • good
    • 1
この回答へのお礼

ご指示通りの記述でちゃんと表示され、実行結果を変数に代入することができました。
どうもありがとうございました。助かりました。

お礼日時:2008/11/06 09:11

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