- ベストアンサー
別フォームの呼び出しでエラーが発生する問題の解決方法
- VB6.0で別フォームを呼び出す際に発生するエラーを解決する方法を紹介します。
- form2が表示されずにメッセージボックスだけが表示される問題の解決方法を説明します。
- Call FORM.Showがエラーを引き起こす場合の対処法と、form1とform2のコードの順番について解説します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
通常は、フォームがアクティブになることはオープン後の1回だと思います。 が、そうでない場合も想定しロード時だけ確認メッセージを表示するようにチェック。 静的変数 isActivate は 初期値=False です。 よって、フォームがロードされアクティブなれば確認メッセージを表示します。 が、この際 isActivate には True を代入しています。 当然のことですが、この値は Sub から抜け出ても保持されます。 ですから、次に 非アクティブからアクティブになって Sub がコールされても二度と問いません。 もちろん、アクティブ→非アクティブ→アクティブというフォームの制御予定がなければ冗長なコード。 Answer = Verify("戻りますか??") は、第四世代言語を模したものです。 msg = MsgBox("戻りますか??", 4, "確認メッセージ") では、他者がコードを読んだ時に直感的に理解することが困難かと思います。 この点を作法の問題として注意を喚起した次第です。 ちょっと、おせっかいでしたが、そこは還暦目前のジイ様のことです。大目に見られたし。 なお、Verify は標準モジュールに書けばいいです。
その他の回答 (2)
×Answer = Verify("戻りますか??", 4, "確認メッセージ") ○Answer = Verify("戻りますか??") 失礼!
<Form1> Option Explicit Private Sub Command1_Click() Form2.Show End Sub Public Sub aaa() MsgBox "aaa" End Sub <Form2> Option Explicit Private Sub Form_Activate() Static isActivate As Boolean Dim Answer As Integer If Not isActivate Then isActivate = True Answer = Verify("戻りますか??", 4, "確認メッセージ") If Answer = vbYes Then Form1.aaa Unload Me Else Unload Me End If End If End Sub Public Function Verify(ByVal Msg As String, _ Optional ByVal DefaultButton As Integer = vbDefaultButton1) As Integer Verify = MsgBox(Msg, vbYesNo + vbQuestion + DefaultButton, " 確認メッセージ") End Function 1、Option Explicit でコードを書くようにしたがいいです。 2、読めば判るように変数名や書き方を工夫されたがいいです。
補足
お早い回答ありがとうございます。 少しお聞きしたいのですが、 If Not isActivate Then isActivate = True Answer = Verify("戻りますか??", 4, "確認メッセージ") の部分は、どういった内容の処理なのでしょうか? Verify()とは、自分で作るプロシージャでしょうか?