ActiveXコントロールのListviewコントロールを貼り付け、
ファイルリスト代わりに使っています。

主項目にファイル名、副項目にファイルサイズと更新日付を表示しています(以下のように)
    ' p(As String)はファイル名が入っている
    Set lv = ListView1.ListItems.Add(, , p)
    lv.SubItems(1) = (FileLen(p) / 1023) & "KB" 'ファイルサイズ
    lv.SubItems(2) = Format(FileDateTime(p), "yyyy/mm/dd h:mm") '更新日付

つぎにカラムヘッダがクリックされるとソートされるように設定しました。

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
    ListView1.SortKey = ColumnHeader.Index - 1

    ' Sorted プロパティを真 (True) に設定してリストを並べ替えます。
    ListView1.Sorted = True
End Sub

問題はファイルサイズで、SubItems(index)がString型のためソートすると以下のようになってしまいます。
(昇順)
100KB
150KB
1KB
55KB

なんとか数値型と見なしてソートしたいのですが、良い方法はないでしょうか?