2012年10月7日日曜日

VBAのscripting.dictionaryをPHPのvar_dumpみたいに出力

'定数         値  内容
' vbEmpty     0   Empty値
' vbNull      1   Null値
' vbInteger   2   整数型
' vbLong      3   長整数型
' vbSingle    4   単精度浮動小数点数型
' vbDouble    5   倍精度浮動小数点数型
' vbCurrency  6   通貨型
' vbDate      7   日付型
' vbString    8   文字列型
' vbObject    9   オブジェクト
' vbError     10  エラー値
' vbBoolean   11  ブール型
' vbVariant   12  バリアント型(バリアント型配列にのみ使用)
' vbDataObject13  非OLEオートメーションオブジェクト
' vbDecimal   14  10進数型
' vbByte      17  バイト型
' vbArray     8192配列
Public Sub var_dump(ByVal obj As Scripting.Dictionary)
    Dim pi As Variant
    Dim strVal As String
    Static strTab As String
    strTab = strTab + vbTab
    For Each pi In obj.Keys
        If Not IsObject(obj.Item(pi)) Then
            Select Case VarType(obj.Item(pi))
                Case vbEmpty
                    strVal = "(Empty)"
                Case vbNull
                    strVal = "(NULL)"
                Case vbInteger
                    strVal = "(Interge)"
                Case vbLong
                    strVal = "(Long)"
                Case vbSingle
                    strVal = "(Single)"
                Case vbDouble
                    strVal = "(Double)"
                Case vbCurrency
                    strVal = "(Currency)"
                Case vbDate
                    strVal = "(Date)"
                Case vbString
                    strVal = "(String)"
                Case vbDecimal
                    strVal = "(Decimal)"
                Case vbByte
                    strVal = "(Byte)"
                Case vbArray
                    strVal = "(Array)"
            End Select
            Debug.Print strTab & pi & " -> " & strVal & obj.Item(pi)
        Else
            If TypeName(obj.Item(pi)) = "Dictionary" Then
                var_dump obj.Item(pi)
            Else
                Debug.Print strTab & pi & " -> " & "(object)" & TypeName(obj.Item(pi))
            End If
        End If
    Next
End Sub

0 件のコメント:

コメントを投稿