我正在使用Hashtable(引用mscorlib.dll)。我用數據填充它,我可以得到任何項目(只要我將請求類型轉換爲存儲在散列表中的完全相同的類型),.ContainsValue/Key - 一切正常。但是我不能通過For Each循環遍歷它。 我已經嘗試了所有可以在互聯網上找到的方法(對於每個元素...,其中元素是DictionaryEntry,通過GetEnumerator),但沒有任何工作 - 我可以通過枚舉器遍歷表,但我無法到達鍵或迭代器所在位置的值。我究竟做錯了什麼? 我已經通過將鍵設置爲數字並遍歷這些數字來解決它,但它不會工作,因爲最後會有相同的數字兩次...無法在VBA中迭代Hashtable(Excel)
PS:我不能使用字典的Hashtable,因爲我需要ContainsKey和ContainsValue,還能夠通過鍵或值檢索項目。
編輯:我當前的代碼(我所追求的是,以取代「對於我」循環,所以我不需要鑰匙是數字我已經知道)
For i = 1 To UBound(rands)
chopped_yes = Split(ThisWorkbook.Worksheets(1).Range("Z" & rands(i)))
chopped_no = Split(ThisWorkbook.Worksheets(1).Range("AA" & rands(i)))
chopped_any = Split(ThisWorkbook.Worksheets(1).Range("AB" & rands(i)))
For Each part In chopped_yes
If rules_yes.ContainsValue(cscs.item(CLng(rands(i)))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
For Each part In chopped_no
If rules_no.ContainsValue(cscs.item(CLng(rands(i)))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
For Each part In chopped_any
pepa = cscs.item(CLng(rands(i)))
chopped_pepa = Split(pepa, "=")
If rules_any.ContainsValue(CStr(chopped_pepa(0))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
Next i
代碼的作用:
CSCS散列表包含關鍵字/請將option_value對,一些關鍵字與別人衝突,是散列表rules_any /是/否包含的關鍵字,衝突,如果所檢查的一個是關鍵字= YES/NO /東西,並設置validcsc爲0(也就是無效的關鍵字組合)。
蘭特是唯一的數字陣列 - 麻煩的是,如果有一個以上的衝突關鍵字,那麼我沒有任何數字,可設置爲關鍵,我稍後會知道並使用它來遍歷
你能否發表你的當前代碼。 – brettdj 2011-12-30 09:36:52
用我的代碼更新了OP – Destabilizator 2011-12-30 09:49:02
我最終編寫了自己的庫,因爲VBA無法處理DictionaryEntry類型(散列表元素)或ICollection類型(這就是.Keys方法返回的結果)。 – Destabilizator 2012-01-06 07:32:18