■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#21-2クラスから値を返す匿名212002-03-06(水) 18:24
#21-2
クラスから値を返す
以下の動きの違いに関して教えて下さい。
簡単なcommand buttonとクラスを作成します。
クラス(Class1)は戻り値を持つメソッド(j)だけです。
プロジェクト1とプロジェクト2の違いは、クラスから
Err.Raiseを使っているかどうかだけです。

●プロジェクト1

'クライアントインターフェース
Private Sub Command1_Click()
    Dim c1 As Class1
    Set c1 = New Class1
    Dim i
    i = c1.j(10)
    Debug.Print i    'クラスから999が戻る
End Sub

'クラスモジュール
Public Function j(a As Integer) As Integer
    On Error GoTo err
    j = a + "a"
exit Function    
err:
    j = 999     'エラーの場合は999を戻す
End Function


●プロジェクト2

'クライアントインターフェース
Private Sub Command1_Click()
    On Error GoTo err
    Dim c1 As Class1
    Set c1 = New Class1
    Dim i
    i = c1.j(10)
    Debug.Print i    'Empty値になる(999は戻らない)
Exit Sub
err:
    If err.Number = vbObjectError + 1000 Then
        Resume Next
    End If
End Sub

'クラスモジュール
Public Function j(a As Integer) As Integer
    On Error GoTo err
    j = a + "a"
    Debug.Print j
Exit Function
err:
    j = 999
    err.Raise vbObjectError + 1000   'エラー番号と999を戻したい
End Function

Err.Raiseを使うとなぜ戻り値が返らない(Empty値)のか
よくわかりません。「エラーが起きているため、戻り値なし」
という動きになっているのですか?
この場合、(クライアントでではなく)クラスから999は
戻せないのでしょうか。


教えて下さい。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)