Don’t forget to turn off the .sorted property on the combo box before calling!
ResortCboFromAlphaToNum cboAbcPublic Sub ResortCboFromAlphaToNum(cc As ComboBox) 'resorts given combobox from alpha sort (usual) to numeric sort 'e.g. 1,11,2,22 >> 1,2,11,22 Dim ListStrArr() As String Dim ItemDataLngArr() As Long Dim tmpLng As Long Dim tmpStr As String Dim i As Integer Dim j As Integer Dim ListCountInt As Integer Dim LargestValLng As Long Dim ArrayPosInt As Integer ListCountInt = cc.ListCount If ListCountInt = 0 Then Exit Sub ReDim ListStrArr(ListCountInt - 1) ReDim ItemDataLngArr(ListCountInt - 1) For i = 0 To ListCountInt - 1 ListStrArr(i) = cc.List(i) ItemDataLngArr(i) = cc.ItemData(i) Next 'note, sorting operation is MUCH faster against arrays than with combo object 'uses exchange sort, not optimal, but adequate For i = 0 To ListCountInt - 1 LargestValLng = 0 For j = i To ListCountInt - 1 If LargestValLng <= val(ListStrArr(j)) Then LargestValLng = val(ListStrArr(j)) 'swap tmpStr = ListStrArr(i) tmpLng = ItemDataLngArr(i) ListStrArr(i) = ListStrArr(j) ItemDataLngArr(i) = ItemDataLngArr(j) ListStrArr(j) = tmpStr ItemDataLngArr(j) = tmpLng End If Next 'j Next 'i For i = 0 To ListCountInt - 1 cc.List(i) = ListStrArr(ListCountInt - 1 - i) cc.ItemData(i) = ItemDataLngArr(ListCountInt - 1 - i) Next cc.RefreshEnd Sub