アプリ版:「スタンプのみでお礼する」機能のリリースについて

 下記のコードで印刷プレビューが表示された後,UserForm3が閉じるようにしてありましたができなくなりました。プレビューの閉じるボタンをクリックするとUserForm3一緒に閉じます。解決策がありましたらお願いします。勉強不足でわかりませんので。

Sub 印刷範囲()

Application.ScreenUpdating = False

Dim ret As Integer

ret = MsgBox("印刷範囲を、" & ActiveSheet.Range("B59").Value & "勤務表上に" _
& "表示します。  よろしいですか?", _
vbOKCancel + vbQuestion, "メイン処理")

Select Case ret
Case vbOK

UserForm3.Show vbModeless
UserForm3.Repaint

With Worksheets("メイン")
.PageSetup.CenterHorizontally = True
.PageSetup.CenterVertically = True
.PrintPreview
End With

Unload UserForm3
End Select

Application.ScreenUpdating = True

End Sub

A 回答 (2件)

質問者様のコードと補足を見比べ、さらにExcel2003で動作させてみましたが、コードの動作はまさしく今のご希望に合わないものでしかありません。


以前は今とは異なるご希望に添った動作だったとのことですが、おそらくコードそのものが提示いただいた今のものと異なっていたのではないでしょうか。
(もしかするとUserForm3のプロパティを変更すればいいのかもしれませんが、申し訳ありませんが私はこのあたりがあまりよくわからないので、オブジェクト名とCaption以外は規定値で使っています)

動作を簡単に説明します。
MsgBoxのOKをクリックすると、UserForm3.Show vbModelessでUserForm3が表示されます。
UserForm3の表示にはvbModelessを指定しているので、フォームが表示されたまま直ちに次の印刷プレビューに行きます。
このとき、ユーザーフォームは色が薄くなって操作できないまま最前面に居座るのですね。これは動作させて初めて知りました。
で、印刷プレビューを閉じると次のUnload UserForm3でUserForm3が消滅します。

ご希望の動作とするには、.PrintPreviewを実行する前にUnload UserForm3あるいはUserform3.Hideを実行すればいいと思います。
ただし、質問文中に提示いただいたコードではUserForm3の表示の直後に印刷プレビューを行っていますので、UserForm3は一瞬だけ表示されてすぐ消えることになります。
おそらく質問者様が実際に使用されているコードでは、UserForm3.Show vbModelessと.PrintPreviewの間に何かユーザーフォームを用いた処理を行っているのではないでしょうか。そうであればこのコードで一瞬だけ表示されてすぐ消えることについては問題ありません。
    • good
    • 0
この回答へのお礼

 ご丁寧にありがとうございます。
確かにPrintPreviewを実行する前にUnload UserForm3を実行するようにコードを変更したら事なきを得ました。まだまだあれこれ勉強不足ですいません。人に教えを請うのも勉強の1つかと思います。

お礼日時:2012/10/25 13:16

申し訳ありませんが状況が今ひとつ理解できませんのでもうちょっと説明いただけないでしょうか。


質問文中のコードで、以前は印刷プレビューを手動で閉じるとUserForm3が自動的に閉じたが、今は印刷プレビューを手動で閉じてもUserForm3が閉じずに開いたまま、ということでしょうか?

この回答への補足

 シートにボタンを作成してあり以前はクリックすると印刷プレビューが表示されるとUserForm3は自動で閉じましたが、今は、印刷プレビューが表示サれてもUserForm3は閉じず表示されたままになり表示サれているプレビューの閉じるボタンをクリックすると一緒に閉じる状況です。言葉足らずで申し訳ありません。

補足日時:2012/10/24 12:06
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています