|
▼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プロパティの設定により、コードを
変えなければならないことがわかっていただけますか?
(又は、どちらでも仕様どおり動くように工夫しなければなりません)。
|
|