0

Dictionary オブジェクトKeysが行番号にすぎず、Items各行の詳細である状況があります (つまり、項目は 1D 配列です)。

以下のコードの助けを借りて、行の詳細をディクショナリ項目 (配列) から行に戻すことができます。しかし、1 行ずつではなく 1 行で行うことはできますか?

Sub DataPushBackToSheet(DicTotDurations,DicHoldData,ob9)

    Dim Key,ColumntoStart,LastColNumber

    ColumntoStart = objExcel1.Application.WorksheetFunction.Match("Parent Business Process ID", ob9.Rows(1), 0) + 1
    LastColNumber = objExcel1.Application.WorksheetFunction.CountA(ob9.Rows(1))

    For Each Key in DicHoldData.Keys

         ob9.Range(ob9.Cells(Key,ColumntoStart),ob9.Cells(Key,ColumntoStart)).Resize(1, UBound(DicHoldData.Item(Key)) + 1).Value = DicHoldData.Item(Key)

    Next

End Sub
4

1 に答える 1

1

または、アイテムまたはキーを直接ダンプできます

VBS

Dim objExcel
Dim objWB
Dim objDic
Dim objKeys
Set objExcel = CreateObject("excel.application")
Set objWB = objExcel.Workbooks.Add
Set objDic = CreateObject("scripting.dictionary")
objDic.Add "apple", 1
objDic.Add "pear", 2
objDic.Add "turkey", 3
objKeys = objDic.keys
objWB.Sheets(1).Range("a1").Resize(UBound(objKeys) + 1) = objExcel.Transpose(objKeys)

VBA

Sub DummyKeys()
Dim objDic
Dim objKeys
Set objDic = CreateObject("scripting.dictionary")
objDic.Add "apple", 1
objDic.Add "pear", 2
objDic.Add "turkey", 3
objKeys = objDic.keys
Range("a1").Resize(UBound(objKeys) + 1) = Application.Transpose(objKeys)
End Sub
于 2012-12-28T11:44:09.863 に答える