VBA:嵌套循环仅运行一次

问题描述 投票:0回答:1
    srcPath = Dir("M:\UPLOAD\Feedback\*.xlsx")
        
    For Each File In myArray
        currentFile = CStr(File)
                                                                        'MsgBox File
        
        Do While srcPath <> ""
            compareFile = CStr(srcPath)
            If currentFile = compareFile Then
                MsgBox (currentFile & compareFile)
                
            Else: End If
            srcPath = Dir()
        Loop
        MsgBox compareFIle
    Next File

我希望它循环遍历数组(文件名列表),然后将每个索引中的文件名与 srcPath 文件夹中的文件进行比较。如果存在匹配,它应该打印正在比较的两个文件。

它适用于一个文件匹配 - 数组列表中的第一个文件。然后 For 循环继续,但在第一个结果之后永远不会进入 Do While 部分。

我尝试过其他循环,但它们对于循环文件夹来说效果不佳。

最终-我希望这个宏获取Excel中的文件列表,将文件名与文件夹进行比较,如果列表中的文件名与文件夹中的文件名匹配,那么我希望它将该文件夹中的文件复制到新的文件夹中地点。我以为这很容易,但 vba 太麻烦了。

excel vba for-loop nested-loops
1个回答
0
投票

需要移动第一行:

For Each File In myArray
    currentFile = CStr(File)
    srcPath = Dir("M:\UPLOAD\Feedback\*.xlsx")
    Do While srcPath <> ""
        compareFile = CStr(srcPath)
        If currentFile = compareFile Then 
            MsgBox (currentFile & compareFile)
        End If
        srcPath = Dir()
    Loop
    MsgBox compareFIle
Next File
© www.soinside.com 2019 - 2024. All rights reserved.