Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


65028 / 76738 ←次へ | 前へ→

【16287】Re:表示について
発言  ichinose  - 04/7/23(金) 12:17 -

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

0 hits

【16283】表示について I・P 04/7/23(金) 11:08 質問
【16287】Re:表示について ichinose 04/7/23(金) 12:17 発言
【16290】Re:表示について I・P 04/7/23(金) 13:33 質問
【16291】Re:表示について IROC 04/7/23(金) 13:53 回答
【16292】Re:表示について I・P 04/7/23(金) 14:12 質問
【16293】Re:表示について IROC 04/7/23(金) 14:46 回答
【16294】Re:表示について I・P 04/7/23(金) 15:09 質問
【16303】Re:表示について IROC 04/7/23(金) 16:23 回答

65028 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free