2015年2月26日木曜日

[VBA] エラー発生を考慮したプロパティ取得関数

エラー発生を考慮したプロパティの取得
Public Function GetPropertySafely(Target As Object, Properties As String, Optional ReturnValueOnError)

    On Error GoTo ERROR_LINE

    Dim Retval, Names, Name As String, TmpObj As Object, i As Long
    Set TmpObj = Target
    Names = Split(Properties, ".")

    For i = LBound(Names) To UBound(Names) - 1 Step 1
        Name = Names(i)
        Set TmpObj = CallByName(TmpObj, Name, VbGet)
    Next

    Name = Names(UBound(Names))
    Retval = CallByName(TmpObj, Name, VbGet)

ERROR_LINE:

    If Err.Number <> 0 Then
        If IsMissing(ReturnValueOnError) Then
            Retval = "[ERR-" & Err.Number & "]" & Err.Description & "プロパティ: " & Name
        Else
            Retval = ReturnValueOnError
        End If
    End If

    GetPropertySafely = Retval

End Function

0 件のコメント:

コメントを投稿