Userform1.Show

【当サイト人気ソフト】
ナンプレ無双:問題作成・解析・印刷・プレイができる無料ナンプレソフト。雑誌掲載多数

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」イベントが発生します。覚えておくと良いでしょう。

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.