【问题标题】:Code runs fine but error when stepping through代码运行正常,但单步执行时出错
【发布时间】:2020-10-16 06:26:54
【问题描述】:

更新:我已被定向到此处的解决方案 VBA - Do While Loop returns Dir <Invalid procedure call or argument>

下面的代码是遍历用户选择的文件夹并列出其中的文件。

它在通过 F5 写入 MsgBox 或 Debug.Print 时工作正常,但在尝试单步执行时会导致运行时错误 5“无效的过程调用或参数”并在 FileToList = Dir 处中断。

当我观察 Dir 和 FileToList 的监视窗口时,Dir 在 FileToList 甚至到达文件夹中的第三个文件之前到达“”。在循环中移动的每按一次 F8 都会导致 Dir 值在一个完整的循环循环之前发生变化。

Sub Loop_Inside_Folder()
 
Dim FileDir As String
Dim FileToList As String
 
 With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Please select a folder"
    .ButtonName = "Pick Folder"
    If .Show = 0 Then
        MsgBox "Nothing was selected"
        Exit Sub
    Else
    'Folder path
        FileDir = .SelectedItems(1) & "\"
    End If
 End With
 
 'Get first matching file name
 FileToList = Dir(FileDir & "*xlsm")
 
 Do Until FileToList = ""
    
    'Debug.Print FileToList
    FileToList = Dir
 Loop
 
End Sub

为了进一步测试,我添加了 5 行:

FiletoList = Dir(FileDir & "*.xls*")
FiletoList = Dir(FileDir & "*.xls*")
FiletoList = Dir(FileDir & "*.xls*")
FiletoList = Dir(FileDir & "*.xls*")
FiletoList = Dir(FileDir & "*.xls*")
FiletoList = Dir(FileDir & "*.xls*")

每一步的值是:

Dir : "File 2.xlsx"

FileToList : "File 1.xlsx"

因此,在单步执行时,FileToList = Dir 似乎无法正常工作。就好像 Dir 无法匹配 FileToList ,所以它转到下一个可用文件。

我不确定这是否与我当地的环境有关?有什么想法吗?

非常感谢。

【问题讨论】:

    标签: vba


    【解决方案1】:

    请参阅初始帖子顶部的 Stack Overflow 链接更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-09
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      相关资源
      最近更新 更多