#370 | VBEのエラートラップオプションの違いについて | VBA | |
VBEのオプションの[全般]タブにおいては、「エラートラップ」の方法として次の3種類の中から1つを選択することができます。
ここでは、標準モジュール内に記述された次のサンプルコードを使って、それぞれどのようにエラー時の動作が異なるかを説明します。次の例では、バイト型の変数にその上限を超える値を代入し、わざとエラーを発生させています。 Sub ErrorTest() Dim bytData As Byte On Error GoTo Err_Handler bytData = 300 Exit_Here: Exit Sub Err_Handler: Beep MsgBox Err.Description, vbOKOnly + vbCritical Resume Exit_Here: End Sub
このように、標準モジュールにおいては、上記のようなコードの範疇では、「クラスモジュールで中断」と「エラー処理対象外のエラーで中断」とはまったく同じ動作をします。少なくてもエラーハンドリングしようとしているわけですから、「エラー発生時に中断」の設定にはしないようにすべきでしょう。 一方、次のようなクラスモジュールを例にとってみます。 ■クラスモジュール「Class1」への記述 Public Property Get ErrTest() As Variant Dim bytData As Byte bytData = 300 End Property ■標準モジュールからの上記クラスの呼び出し Sub ErrorTest2() Dim ctest As New Class1 Dim varTmp As Variant varTmp = ctest.ErrTest() End Sub ErrorTest2プロシージャを「クラスモジュールで中断」の設定で実行すると、呼び出されたクラスモジュール上でプログラムが停止します。 一方、「エラー処理対象外のエラーで中断」の設定で実行すると、呼び出し側の標準モジュール上でプログラムが停止します。 このように、「クラスモジュールで中断」と「エラー処理対象外のエラーで中断」はクラスモジュールを使う際に違いが出てきます。よって、クラスモジュールを開発するような場合には、この点に留意してオプション設定するようにします。 |
|||
|
Copyright © T'sWare All rights reserved |