94775


表記、状況は把握できているのですが、「なぜ」の部分が解明できずモヤモヤ状態です。  
何か調査のヒントを頂けたらと思います。

標準モジュールで以下を実行 ⇒ test01, test02とも正常終了で結果も問題なし  
※この関数は、配列の次元数を求めるモノでエラートラップ方法だけを変えています。

[code]

    Function test1() As Long
    On Error GoTo Finally
        
        Dim myArray As Variant
        Dim s As String
        Dim tmp As Long
        Dim i As Long
        
        s = "A,B,C,D,E"
        myArray = Split(s, ",")
        
        i = 0
        Do While 1
            i = i + 1
            tmp = UBound(myArray, i)
        Loop
        
    Finally:
        test1 = i - 1
        Debug.Print test1
        
    End Function
    
    Function test2() As Long
    On Error Resume Next
        
        Dim myArray As Variant
        Dim s As String
        Dim tmp As Long
        Dim i As Long
        
        s = "A,B,C,D,E"
        myArray = Split(s, ",")
        
        i = 0
        Do While Err.Number = 0
            i = i + 1
            tmp = UBound(myArray, i)
        Loop
        
    On Error GoTo 0
        test2 = i - 1
        Debug.Print test2
        
    End Function
    
[/code]

ここからが本題です。  
このロジックをクラスモジュールに導入しました。  
test01, test02とも動作は問題ありません。  
◆問題：クラスインスタンスをウォッチリストに入れ＋を開いた時、  
test02の場合は、フリーズ（エクセル全体）する。  
test01の場合は、以下のように表示できる（正常）  
[![画像の説明をここに入力](https://i.stack.imgur.com/RrdkA.png)](https://i.stack.imgur.com/RrdkA.png)

処理自体は、test01を実装して問題ないのですが、  
この違いの理由が知りたいと思っています。


CC BY-SA 4.0
2023-05-07T00:46:38.837
94772
2023-05-07T02:26:13.157
2023-05-07T02:20:21.400
4236
58193
question
vba debugging
クラスモジュール開発でのエラー処理で不思議な現象に遭遇


ウォッチリストですが、単に値を表示するだけではありません。プロパティの値を表示するためには`Property
Get`メソッドを実行する必要があります。その際、本来の実行に影響を与えてはいけないため、`Err`などはリセットされる特殊な実行モードで実行されていると推測されます。

今回の場合`Property Get`メソッドを実行する延長で`test01`または`test02`が実行される状況でしょうか？

[code]

    On Error Resume Next
    Do While Err.Number = 0
       ...
    Loop
    
[/code]

というコードにおいて

  * `On Error Resume Next`により発生したエラーは無視され実行が継続される
  * 特殊な実行モードにより`Err`は`0`にリセットされる

が組み合わされ、無限ループに陥っていることが考えられます。


CC BY-SA 4.0
2023-05-07T02:20:00.293
94775
2023-05-07T02:26:13.157
2023-05-07T02:26:13.157
4236
4236
94772
answer