『ユーザーフォームの表示方法について』(栗栄太)
1.新規にブックを作成する
2.test.xlsm で保存する
3.ユーザーフォームを3つ(UserForm1,UserForm2,UserForm3)を追加する
4.UserForm1にボタンを2つ追加して
以下のコードを追加
Private Sub CommandButton1_Click()
UserForm1.Hide
UserForm2.Show
UserForm1.Show vbModeless
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
UserForm3.Show
UserForm1.Show vbModeless
End Sub
5.標準モジュールを1つ(Module1)追加する
6.標準モジュールに以下のコードを追加
Public Sub test()
UserForm1.Show vbModeless
End Sub
この状態でボタン1を押してUserForm2を表示させ
ボタン2を押してUserForm3を表示させます。
この場合は正常に各フォームを表示した後
終了するとUserForm1が表示されます。
ところが、
UserForm2にラベルを貼り付けると
CommandButton1をクリックしてUserForm2を
表示しUserForm1が表示されずに終了してしまいます。
CommandButton2をクリックしてUserForm3を
表示した後はUserForm1が表示されます。
UserForm1を表示させたままにするにはどうすればいいですか?
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
。。。^^:
m(__)m
(隠居Z) 2025/12/09(火) 11:09:51
やってみました。再現しました。
姑息的対策ですが、
Private Sub CommandButton1_Click()
UserForm1.Hide
UserForm2.Show
DoEvents ' ここに DoEvents なんなら3,4回
UserForm1.Show vbModeless
End Sub
でどうでしょう
(´・ω・`) 2025/12/09(火) 11:22:28
(´・ω・`)さん
ありがとうございます。
上記の消えなくなった状態になったので
再度作り直して消える状態にしました。
そして確認しました。
DoEvents を入れるだけで消えなくなりました。
ここで、前回のこともあり、
再度 DoEvents を削除して元の状態に
戻して確認すると、
やはり、消えない状態になりました。
以上2つのことから
一度、vbModeless に設定するか
doevents を入れて実行させてやると
そのあとは元に戻しても消えることはなくなる
ということです。
内部的に何かが変わっているのだと思われます。
もしわかる方がいれば
教えてください。
ありがとうございました。
(栗栄太) 2025/12/09(火) 13:32:15
私はわからないひとですが、一応書いておきます。
動作を確認するためにMsgBoxを挟んだらたまたま上手くいったので、 DoEvents でもいけるだろうと思ったら上手くいったという流れなので、 なぜ上手くいくのかよく分かりません
そもそも >UserForm2にラベルを貼り付けると 挙動が変わること自体がよく分かりません。何が変わったのでしょうね
分からないことばかりです。MicroSoftに問い合わせてみてはどうでしょう (´・ω・`) 2025/12/09(火) 14:51:34
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
Private Sub CommandButton2_Click()
UserForm3.Show
End Sub
でいいんじゃないですか。
(マクロ苦手) 2025/12/09(火) 16:49:46
(マクロ苦手)さん
ありがとうございます。
UserForm1,UserForm2またはUserForm3が表示されている状態で
UserForm1が使用できないのに表示されているとボタンが押せないとかいわれるので
消しています。
(栗栄太) 2025/12/15(月) 08:16:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.