2012-12-28 35 views
0

我有一種情況,我的字典對象Keys只是行號,而Items是每一行的細節(即Item是一維數組)。VBScript數據從陣列傳輸到行可以更快嗎?

現在在下面的代碼的幫助下,我可以將行詳細信息從字典項目(數組)推回到行。但是,我們可以一行一行嗎?

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 
+0

這似乎是VBA。爲什麼提到VbScript? –

+0

@iDevlop我開發了.vbs文件中的代碼,.vbs對vba來說非常相似! –

+0

爲什麼不使用一個數組,其索引是rownumber而不是Dictionary?字典非常快,但數組會更快。 – AutomatedChaos

回答

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 
+0

直接從您的Excekl範圍創建一維數組。我無法將行號保存爲字典鍵,並將所有行詳細信息保存爲Item數組。我把這個行的細節放在Item上,因爲我需要對它們做很多操作。 –

+0

如果我還沒有回答你的問題,那麼你可以更清楚你有什麼,以及你想做什麼。 – brettdj

+0

這裏我的字典項目不是一個單一的項目,而是一個關鍵是持有物品的數組。這些Item只不過是一整行。在用一個鍵加載Item時,我使用該行號作爲另一個「Sub」中的鍵,以便當我將這些Items推回行時,我可以確定從哪個行挑選那些物品。如果您需要更多說明,請讓我知道! –

相關問題