MyName = Dir(MyPath & "*.*", vbDirectory) '得到文件    Do While MyName <> ""  ' 开始循环。       If MyName <> "." And MyName <> ".." Then
          ' 使用位比较来确定 MyName 代表一目录。
            If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
                ReDim Preserve mydir(iii)
                StrTmp = MyPath & MyName & "\"
                 
                    mydir(iii) = StrTmp
                    iii = iii + 1
                    
                    GetALLDir (mydir(iii - 1)) '递归
                    List1.AddItem StrTmp
                End If
                
            End If
       End If
       MyName = Dir  ' 查找下一个
    Loop'在第一次递归调用返回时 MyName = Dir  这句话为什么就报错???

解决方案 »

  1.   

    Public Function GetALLDir(DirName As String)    Dim MyPath, MyName As String
        
        MyPath = DirName '得到文件路径
        
        On Error Resume Next    If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
        MyName = Dir(MyPath & "*.*", vbDirectory) '得到所以的bak文件    Do While MyName <> ""  ' 开始循环。       If MyName <> "." And MyName <> ".." Then
              ' 使用位比较来确定 MyName 代表一目录。
                If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
                    ReDim Preserve mydir(iii)
                    StrTmp = MyPath & MyName & "\"
                    If StrTmp <> mydir(iii - 1) Then
                    
                        mydir(iii) = StrTmp
                        iii = iii + 1
                        
                        GetALLDir (mydir(iii - 1)) '递归
                        List1.AddItem StrTmp
                    End If
                    
                End If
           End If
           MyName = Dir  ' 查找下一个
        Loop
    End Function
    '这是全部函数
      

  2.   

    不好意思刚看过说明了,dir是不支持递归调用 的