| 
    
     |  | ▼I・P さん: こんにちは。
 
 >UserFormをShowした時に、Excelを最小化または画面のスクロ−ルをさせようとして、Formのプロパティ-ShowModelをFalseにしたのですが、UserFormが操作ができなくなってしまいました。Trueにした場合は操作できるのですが、どうしたらよいのでしょうか?教えて下さい。
 
 ShowModalプロパティがTrueの時とFalseのときでは、プログラムの制御が違ってきてしまいます。
 
 例えば、Userform1には、テキストボックス(Textbox1)とコマンドボタン(Commandbutton1)が貼り付けてあるユーザーフォームを考えてみましょう。
 
 標準モジュールに
 '=======================================================
 Sub main()
 UserForm1.Show vbModal
 Cells(1, 1).Value = UserForm1.TextBox1.Text
 Unload UserForm1
 End Sub
 
 userform1のモジュールでは
 '=======================================================
 Private Sub CommandButton1_Click()
 Me.Hide
 End Sub
 
 フォームを表示させてテキストボックスに入力された内容をコマンドボタンクリックにより、セルA1にセットする
 
 というコードですが、
 
 この場合、
 mainプロシジャーの
 UserForm1.Show vbmodal
 
 で、フォームが表示されますが、ここでこのプログラムの制御は、ユーザーフォームが
 閉じられるか非表示になるまで止まっています。
 つまり、Mainというプロシジャーは、終了していません。
 
 これを単純にmainプロシジャーを
 '=================================================================
 Sub main()
 UserForm1.Show vbModeless
 Cells(1, 1).Value = UserForm1.TextBox1.Text
 Unload UserForm1
 End Sub
 
 として、モードレスにした場合、実行していただければわかりますが、
 UserForm1.Show vbModeless
 でフォームを表示した後に直ちに次の
 Cells(1, 1).Value = UserForm1.TextBox1.Text
 に制御が移り実行します。
 
 よって、この場合は、一瞬フォームが表示されてすぐ消えてしまうはずです。
 
 このことから、ユーザーフォームのShowModalプロパティの設定により、コードを
 変えなければならないことがわかっていただけますか?
 (又は、どちらでも仕様どおり動くように工夫しなければなりません)。
 
 
 |  |