Excel VBA質問箱 IV

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

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


11401 / 13646 ツリー ←次へ | 前へ→

【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 回答[未読]

【16283】表示について
質問  I・P  - 04/7/23(金) 11:08 -

引用なし
パスワード
   UserFormをShowした時に、Excelを最小化または画面のスクロ−ルをさせようとして、Formのプロパティ-ShowModelをFalseにしたのですが、UserFormが操作ができなくなってしまいました。Trueにした場合は操作できるのですが、どうしたらよいのでしょうか?教えて下さい。

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

【16290】Re:表示について
質問  I・P  - 04/7/23(金) 13:33 -

引用なし
パスワード
   ▼ichinose さん:
ご回答ありがとうございます。
今、UserFormを表示させた状態で画面をスクロ−ルさせ、
UserForm中にあるTextBoxに入力ができるようにしたいのですが
どのように設定したらよろしいでしょうか?

【16291】Re:表示について
回答  IROC  - 04/7/23(金) 13:53 -

引用なし
パスワード
   モードレスで表示して出来ませんか?

【16292】Re:表示について
質問  I・P  - 04/7/23(金) 14:12 -

引用なし
パスワード
   ▼IROC さん:
>モードレスで表示して出来ませんか?
TrueとFalse両方の状態で試してみたのですが、うまくいきません。
UserFormを表示せずにマクロが動いていってしまいます。

【16293】Re:表示について
回答  IROC  - 04/7/23(金) 14:46 -

引用なし
パスワード
   >TrueとFalse両方の状態で試してみたのですが、うまくいきません。
>UserFormを表示せずにマクロが動いていってしまいます。

状況が分からないので、コードを掲載して頂けませんか?

【16294】Re:表示について
質問  I・P  - 04/7/23(金) 15:09 -

引用なし
パスワード
   ありがとうございます。以下がソ−スですが

UserFormのコ−ド
Private Sub CommandButton1_Click()
  Sheets(1).Cells(1, 1) = TextBox1.Value
  Unload UserForm1
End Sub
Private Sub CommandButton2_Click()
  Me.Hide
End Sub

標準モジュ−ルのプロシジャ−
Sub 読み()
  Sheets(2).Select
  UserForm1.Show
  y = Sheets(1).Cells(1, 1)
  Sheets(1).Cells(1, 1).ClearContents
  For l = 15 To Range("A65536").End(xlUp).Row
    If Cells(l - 1, 2) = "" Then
    F = Cells(l, 2).Value
    ElseIf Cells(l, 2).Value = "" Then
    Else
    k = Cells(l, 1)
    NTD(F, k) = Cells(l, y)
    End If
  Next l
End Sub

よろしくお願い致します。

【16303】Re:表示について
回答  IROC  - 04/7/23(金) 16:23 -

引用なし
パスワード
   Sub 読み() で UserForm1 を モーダル表示すると
SHOW したあとは、処理が、UserFormモジュールに移ります。
そして、UserFormが消えると、Sub 読み()を続行します。

一方、UserForm1 を モードレス表示すると
SHOW したあとも、Sub 読み()を続行します。

なので、用途に合わせて、コードを
UserFormモジュールに移しては如何でしょうか?

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