タイトル : 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 で繋ぐのが適切であるということになります。 |