ReDim 语句
在过程级别中使用,用于为动态数组变量重新分配存储空间。
语法
ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
同样地,在使用 Preserve 时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。
如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。
------------------------------------------------
以上是MSDN 里的解释。
根据这个解释,那么你这句有问题:
ReDim SearchedFileMP3(1 To IndexMP3): IndexMP3 = IndexMP3 + 1
会造成 之前的数据内容丢失。
================
Dim t1 As Double, t2 As Double
Dim n As Long
Dim s As String
t1 = Timer
n = 0
s = Dir(filepath)
Do While s <> ""
n = n + 1
ReDim Preserve a(n)
a(n) = s
s = Dir
Loop
t2 = Timer
Cls
Print "文件总数:"; n
Print "开始时间:"; t1
Print "结束时间:"; t2
Print "消耗时间:", Format(t2 - t1, "0.00000")