Board logo

標題: 字典排序 [打印本頁]

作者: modelcrazyer    時間: 2015-12-26 23:25     標題: 字典排序

以下是我用字典的一段程式
arr1 = Array(UserForm5.ComboBox1)
Set dic1 = CreateObject("scripting.dictionary")
For I = 1 To UBound(arr1)
  dic1(arr1(I)) = ""
Next
  arr1 = UserForm5.ComboBox1.List
  For I = 1 To UBound(arr1)
    dic1(arr1(I, 0)) = ""
    'arr1(I) = Application.Small(UBound(arr1), I)
  Next
  UserForm5.ComboBox1.List = dic1.keys
但是我想要排序,請問要怎麼寫??
作者: 准提部林    時間: 2015-12-28 09:56

使用〔陣列排序〕是可以,程式碼也不多,但對不熟VBA者不太容易理解,尤其是〔多欄式〕的陣列∼∼

建議利用一張閒置的工作表中欄位來排序後再取回:
With [Sheet1!A1].Resize(dic1.Count, 1)
   .Value = Application.Transpose(dic1.keys)
   .Sort Key1:=.Item(1), Order1:=xlAscending, Header:=xlNo
   UserForm5.ComboBox1.List = .Value  
   .ClearContents
End With
作者: modelcrazyer    時間: 2015-12-29 20:31

感謝!!看來還是得繞個圈子!!謝謝!!
作者: 准提部林    時間: 2015-12-29 20:57

回復 3# modelcrazyer


做再次處理,繞圈子是必要,若是〔純數值〕,可利用函數:
ReDim Brr(1 To Dic1.Count)
For i = 1 To Dic1.Count
  Brr(i) = Application.Small(Dic1.keys, i)
Next i
UserForm5.ComboBox1.List = Brr




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)