複数のユーザーフォームをコマンドボタンにて表示・非表示させるには
VBA勉強中のものです。
複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。
例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、
コマンドボタン1→ユーザーフォーム1を表示
コマンドボタン2→ユーザーフォーム2を表示
コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。
そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。
どなたか、どのようにしたらいいかご教授ねがいます。
サンプルコード)
---------------------------------------------------
'UserForm1のコード
Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm1.Hide
End Sub
Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm1.Hide
End Sub
----------------------------------------------------
'UserForm2のコード
Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm2.Hide
End Sub
Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm2.Hide
End Sub
-------------------------------------------------------
'UserForm3のコード
Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm3.Hide
End Sub
Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm3.Hide
End Sub
------------------------------------------------------------
'標準モジュール コード
Sub UserForm1_show()
UserForm1.Show
End Sub
Sub UserForm2_show()
UserForm2.Show
End Sub
Sub UserForm3_show()
UserForm3.Show
End Sub
お礼
お世話になります。 本プログラムはユーザーが自分のデータを入力することで、 結果が返る。という代物です。 そして本プログラムの処理部分をoyaと称してコードしています。 これまでは、ユーザーからの情報をinputboxで受けていたのですが、 質問に書いたように、userformを勉強しようと思い、 inputbox部分をuserform1に置き換えたということです。 inputboxなら、上から下に制御が流れますので問題なかったのですが、 userform1にしたら、showしたと同時に制御が流れてしまうので、 useroform1による情報の入力が済んだことを確認して、 後続処理を開始したいと。 そのため、同期を取りたいと質問しました。 ズバリ、分からないなりにイメージですが Do While userform1処理中 DoEvents Loop のようなことがやりたいのです。 userform1がunloadされた情報が調べられれば解決ですが。 分かりにくい説明で恐縮です。 引き続き宜しくお願いします。
補足
色々有り難うございました。 以下で解決しました。 Do While userform1.visible DoEvents Loop お世話になりました。