- 締切済み
ユーザーフォーム
シート1にユーザーフォーム1を、シート2にユーザーフォーム2をそれぞれ表示しておいてHideで非表示にして画面を切り替えて使用してますが、片方のフォームを表示しておくのを忘れたりHideでなくUnroadで終了していたのを忘れていたりしてエラーにしてしまいます。Hideで非表示でなかったらフォームを開かないしShowでもエラーにならないようにするにはどうしたらよろしいでしょうか。VBAは素人ですのでやさしく教えてください。宜しくおねがいします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ThisWorkbook モジュールに、 '--------------------------------- Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "Sheet1" Then UserForm1.Show 0 Unload UserForm2 ElseIf Sh.Name = "Sheet2" Then UserForm2.Show 0 Unload UserForm1 Else Unload UserForm1 Unload UserForm2 End If End Sub '--------------------------------- このようなコードを貼り付けます。 UserForm モジュールには以下のようにします。 UserForm1 には、 ひとつ終了用のコマンドボタンを付けておいて、 '--------------------------------- Private Sub CommandButton1_Click() Unload Me End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then MsgBox "X では終了できません", vbCritical Cancel = True End If End Sub '--------------------------------- このようにします。 UserForm2 にも同様にしておきます。 こうすれば、エラーでも起こさない限りは、右上の赤い「×」ボタンで終了はできないし、完全にマクロからの終了になります。シートを切り替えるたびに、それぞれのユーザーフォームが立ち上がります。
お礼
ありがとうございました。早速やってみました。うまくいきました。