エラー判定!

解決


V.B.c  2002-10-16 16:09:19  No: 105183  IP: [192.*.*.*]

皆さん:こんにちは!

  Private Sub cmdA_Click()
    cmdB_Click
    Form1.Show
  End Sub
の処理をしています。

  cmdB_Clickの処理でエラーが出た時にForm1.Showの処理を中止したいです.
  cmdB_Click中のエラーチェックのところでflag = 0とかに設定し,
  Private Sub cmdA_Click()
    cmdB_Click
    if flag <> 0 then
       Form1.Show
    end if
  End Sub
 にすればできますが他にもっと変数を使わない簡単な方法ってありますか?
 よろしくお願いします。

編集 削除
YuO  2002-10-16 16:24:22  No: 105184  IP: [192.*.*.*]

On ErrorとかResumeとかを適切に使えばよいと思いますが。

編集 削除
V.B.c  2002-10-17 11:06:08  No: 105185  IP: [192.*.*.*]

YuOさん:こんにちは!

  すみません。説明下手でした。
  本来はエラーチェックではなく,MsgBoxで警告メッセージを出した時(cmdB_Click)の処理をしたかったんです。
  たぶんフラグを使う方法しかないようですね。

編集 削除
YuO  2002-10-17 13:03:20  No: 105186  IP: [192.*.*.*]

cmdB_Clickの内容をごっそり何らかの関数に移し替えて,cmdB_Clickでも,cmdA_Clickでもその関数を呼ぶようにします。
で,cmdA_Clickでは戻り値をチェックするようにすれば,変数は不要です。

グローバル変数を使う前に,関数の戻り値にできないか考えてみた方がよいでしょう。

編集 削除
V.B.c  2002-10-17 13:30:10  No: 105187  IP: [192.*.*.*]

YuOさん:こんにちは!

  そうですね。それも一つのいいアイディアですね。
  
  でも,cmdB_Clickの処理が大きい場合,それをまた関数に移し替えるのも
大変じゃないかと思います。
  cmdB_Clickの処理が単純の場合はいけると思います。

  いろいろアドバイスありがとうございました!
  今後ともよろしくお願いします。

編集 削除
YuO  2002-10-17 13:42:30  No: 105188  IP: [192.*.*.*]

解決となっていますが……。

>  でも,cmdB_Clickの処理が大きい場合,それをまた関数に移し替えるのも
> 大変じゃないかと思います。

全処理をcmdB_Clickから関数に移すのです。
単純にCut & Pasteするだけですよ。

編集 削除