也可利用Collection的key的唯一性來過濾.
Dim objCollection As new Collection
Dim i as integer
on error resume next
objCollection .Add "kimuratakuya", "kimuratakuya"
objCollection .Add "kimuratakuya", "kimuratakuya"
objCollection .Add "sdf", "sdf"
...
...
for i=1 to objCollection.Count
debug.print objCollection.item(i)
next
set objCollection=nothing
Call StrSortAZ(Str, LBound(Str), UBound(Str)) '排序
For I = 0 To UBound(Str)
If OleVal <> Str(I) Or I = 0 Then '过滤重复项
ID = ID + 1
ReDim Preserve OutStr(ID)
OutStr(ID - 1) = Str(I)
End If
OleVal = Str(I)
Next
For I = 0 To UBound(OutStr)
Debug.Print OutStr(I)
Next
End Sub
'
'字符串快速排序(从小到大)
'函数:StrSortAZ
'参数:sArr String数组,First 数组的左边界,Last 数组右边界.
'返回值:无
'例子:
Public Sub StrSortAZ(ByRef sArr() As String, First As Long, Last As Long)
Dim vSplit As String, vT As String
Dim I As Long, J As Long, iRand As Long
If First < Last Then
If Last - First = 1 Then
If sArr(First) > sArr(Last) Then
vT = sArr(First): sArr(First) = sArr(Last): sArr(Last) = vT
End If
Else
iRand = Int(First + (Rnd * (Last - First + 1)))
vT = sArr(Last): sArr(Last) = sArr(iRand): sArr(iRand) = vT
vSplit = sArr(Last)
Do
I = First: J = Last
Do While (I < J) And (sArr(I) <= vSplit)
I = I + 1
Loop
Do While (J > I) And (sArr(J) >= vSplit)
J = J - 1
Loop
If I < J Then
vT = sArr(I): sArr(I) = sArr(J): sArr(J) = vT
End If
Loop While I < J
If (I - First) < (Last - I) Then
StrSortAZ sArr(), First, I - 1
StrSortAZ sArr(), I + 1, Last
Else
StrSortAZ sArr(), I + 1, Last
StrSortAZ sArr(), First, I - 1
End If
End If
End If
End Sub