Public Type PPPOE '自定义类型PPPOE user As String pass As String End Type Public ADSL() As PPPOE Function RandArray() '随机排列数组 Dim TempAdsl() As PPPOE, i As Long, j As Long, Ti As Long, Tj As Long, T As PPPOE ReDim Preserve TempAdsl(UBound(ADSL())) For i = 0 To UBound(ADSL()) For Tj = 0 To 2 j = RandBack(UBound(ADSL())) 'Form1.List3.AddItem j If ADSL(j).user = "Null" Then ReDim Preserve ADSL(FilterNull2(ADSL())) Else T = ADSL(j) ADSL(j).user = "Null" Exit For End If Next TempAdsl(i) = T Next Ti = UBound(TempAdsl()) ReDim Preserve ADSL(Ti) For i = 0 To Ti ADSL(i) = TempAdsl(i) Next End Function Function RandBack(ByVal i As Long) As Long '返回随机数 Randomize RandBack = Int((i * Rnd) + 0) End Function Function FilterNull(ByRef TempAdsl() As PPPOE) As Long '过滤数组中方法1 Dim i As Long, i2 As Long i2 = 0 Dim TempStrAdsl() As PPPOE For i = 0 To UBound(TempAdsl) If TempAdsl(i).user <> "Null" Then ReDim Preserve TempStrAdsl(i2) TempStrAdsl(i2) = TempAdsl(i) i2 = i2 + 1 End If Next For i = 0 To UBound(TempStrAdsl) TempAdsl(i) = TempStrAdsl(i) Next FilterNull = UBound(TempStrAdsl) End Function Function FilterNull2(ByRef TempAdsl() As PPPOE) As Long '过滤数组中方法2 Dim T As PPPOE, i As Long, j As Long, i2 As Long, Ti As Long i2 = UBound(TempAdsl()) j = 0 For i = 0 To i2 If TempAdsl(i).user = "Null" Then For Ti = i + 1 To i2 If TempAdsl(Ti).user <> "Null" Then TempAdsl(i) = TempAdsl(Ti): TempAdsl(Ti).user = "Null": Exit For Next End If Next For i = 0 To i2 If TempAdsl(i).user = "Null" Then FilterNull2 = i - 1: Exit For Next End Function