tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: commondialogのエラーについて
投稿日: 2014/04/03(Thu) 19:46
投稿者魔界の仮面弁士
> 言われた通り見てみたら、エラー発生時に・・・が選択されていました。
[ツール]-[オプション]の[全般]タブにて切り替えられます。

規定値は『クラス モジュールで中断』ですが、
これはクラスモジュールを使っていない場合、
『エラー処理対象外のエラーで中断』と同義となります。


> それで、クラスモジュールもしくはエラー処理対象外どちらに設定
> した方がベストなのでしょうか?どちらも、うまく出来たのですが

違いについては、ヘルプの『クラス モジュールのデバッグ』の項に
具体例つきで書かれていますので、そちらを参照してみてください。

長々と説明するよりも、実際にサンプルで試してみた方が分かりやすいと思いますし。


[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
 └[プログラミング ガイド]
  └[Visual Basic を使ってできること]
   └[オブジェクト]
    └[独自のクラスの作成]
     └[クラス モジュールのデバッグ]★


> どちらがベストなのかイマイチ理解出来ていません・・・。

「クラス モジュール」や「ユーザーコントロール」などで
エラーが発生した場合に、それらの中で停止させるのが
『クラス モジュールで中断』です。

『エラー処理対象外のエラーで中断』の場合は、
「クラス モジュール」や「ユーザーコントロール」などで
発生したエラーでは停止せず、それらの呼び出し元となった
「フォーム モジュール」や「標準モジュール」上で停止します。

ただしいずれも、エラートラップ処理が行われている場合には停止しません。


そして『エラー発生時に中断』は、エラートラップの有無に
関係なく、エラー発生箇所で停止します。


> >    X = MsgBox(MSG, vbInformation + vbOKOnly, "キャンセル")
> ここは「+」ではなく「Or」が望ましいです。
> ・・・初めて知りました。今後は、ORを使ってみます。

たとえば、
 a = vbInformation Or vbModal
とした場合、この値は「65」となります。そして、
 a = vbInformation + vbModal
とした場合も「65」です。


それではここで、さらに
 a = a Or vbInformation
とした場合はどうなるでしょうか。

vbInformation が 2 回付与されたわけですが、結果は変わらず「65」のままとなります。
一方、+ で加算してしまうと、65 から 129 へと変化してしまう、というわけです。


各フラグを 1 回しか加えない場合は、+ でも結果は一緒なのですが、
本来の意味から言えば、Or で繋ぐのが適切であるということになります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。