• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別フォームの呼び出し)

別フォームの呼び出しでエラーが発生する問題の解決方法

このQ&Aのポイント
  • VB6.0で別フォームを呼び出す際に発生するエラーを解決する方法を紹介します。
  • form2が表示されずにメッセージボックスだけが表示される問題の解決方法を説明します。
  • Call FORM.Showがエラーを引き起こす場合の対処法と、form1とform2のコードの順番について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.3

通常は、フォームがアクティブになることはオープン後の1回だと思います。 が、そうでない場合も想定しロード時だけ確認メッセージを表示するようにチェック。 静的変数 isActivate は 初期値=False です。 よって、フォームがロードされアクティブなれば確認メッセージを表示します。 が、この際 isActivate には True を代入しています。 当然のことですが、この値は Sub から抜け出ても保持されます。 ですから、次に 非アクティブからアクティブになって Sub がコールされても二度と問いません。 もちろん、アクティブ→非アクティブ→アクティブというフォームの制御予定がなければ冗長なコード。 Answer = Verify("戻りますか??") は、第四世代言語を模したものです。 msg = MsgBox("戻りますか??", 4, "確認メッセージ") では、他者がコードを読んだ時に直感的に理解することが困難かと思います。 この点を作法の問題として注意を喚起した次第です。 ちょっと、おせっかいでしたが、そこは還暦目前のジイ様のことです。大目に見られたし。 なお、Verify は標準モジュールに書けばいいです。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

×Answer = Verify("戻りますか??", 4, "確認メッセージ") ○Answer = Verify("戻りますか??") 失礼!

noname#140971
noname#140971
回答No.1

<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、読めば判るように変数名や書き方を工夫されたがいいです。

sikimori
質問者

補足

お早い回答ありがとうございます。 少しお聞きしたいのですが、 If Not isActivate Then   isActivate = True   Answer = Verify("戻りますか??", 4, "確認メッセージ") の部分は、どういった内容の処理なのでしょうか? Verify()とは、自分で作るプロシージャでしょうか?

関連するQ&A