トップ > 玄人向け > Userform1.Show

Showメソッド   2011.09.11

ShowメソッドはUserFormオブジェクトを表示します。Userformを使う場合は必須のメソッドです。引数により動作に違いがあるため注意が必要です。

機能、使用例、引数

機能:UserFormオブジェクトを表示する。

Sub Form_Show() '使用例
    UserForm1.Show '赤字部はユーザーフォームの名前
End Sub

引数:[Modal]
引数[Modal]はユーザーフォームのモーダル・モードレスの選択に使用します。

モーダル:フォーム以外は操作できません。
モードレス:フォーム以外の操作が可能になります。

ユーザーフォームとシートを並行して使用したい場合は、モードレスに設定すれば良いわけです。
尚、引数[ Modal ]を省略した場合はユーザーフォームはモーダルになります。

【設定値】
定数    値   内容
vbModal   1   ユーザーフォームはモーダルです。(既定値)
vbModeless  0   ユーザーフォームはモードレスです。


引数による動作の違い

引数をvbModalに設定した場合、そのユーザーフォームを閉じるまで、Userform1.Show後のコードは実行されません。
一方、引数をvbModelessに設定した場合、ユーザーフォームを開き終わった時点で、Userform1.Show後のコードが実行されます。

次の例の場合、モードレスに設定したForm_Show2は、ユーザーフォームが表示後、直ぐに消えてしまいます。尚、この場合ユーザーフォームのイベントプロシージャ「UserForm_Initialize」は実行されますが、「UserForm_Activate」は実行されないようです。
vbModelessを設定する場合は、この点に注意しましょう。

Sub Form_Show1() 'モーダルに設定
    UserForm1.Show vbModal
    Unload UserForm1
End Sub

Sub Form_Show2() 'モードレスに設定 UserForm1.Show vbModeless Unload UserForm1 End Sub

※上記コードを試す場合は、予めユーザーフォーム「Userform1」を挿入しておく必要があります。


モーダル設定での注意

フォームをvbModalで表示した場合、下図のように、プリントプレビューのコードを実行すると、Excelがフリーズします。



フォームをvbModelessで表示した場合は、この問題を回避できますが、vbModalで表示したい場合もあると思います。そのような時には、フォームを非表示にし、プリントプレビュー後に再表示することで、この問題に対応できます。

Private Sub CommandButton1_Click()
    With Me
        .Hide
        Worksheets(1).PrintPreview
        .Show
    End With
End Sub

※上記コードは、「Userform1」に配置したコマンドボタン1の「Click」イベントに記述します。
※再表示の際、フォームの「Activate」イベントが発生します。覚えておくと良いでしょう。


ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.