【问题标题】:File Looping Macro Stops After First Success第一次成功后文件循环宏停止
【发布时间】:2014-10-10 20:50:15
【问题描述】:

我希望有人可以帮助我处理我的宏。这是相对基本的,但我似乎无法弄清楚为什么它不会继续循环。

宏应查看所有 TXT 文件的设置文件夹。那些在过去一周内修改日期的文件应该表明成功并继续其他步骤。

我遇到的问题是,上周修改过的第一个文件触发下一步,但随后宏结束,不再继续查找其他最近修改过的文件。

下面的示例被简化为打开一个 msgbox,但完整的宏会为每个 TXT 文件运行额外的进程。

如果有人可以提供一些指导,将不胜感激。

Sub OpenAllFiles()
    Dim MyFile As Variant
    Dim MyFolder As String
    Dim FileCount As Integer

    MyFolder = "C:\Input Files\"
    MyFile = Dir(MyFolder)

    Do While (MyFile <> "")
        If Format(FileDateTime(MyFolder & MyFile), "YYYYMMDD") > Format(Now - 6, "YYYYMMDD") Then    
            MsgBox ("Recent File Found.  " & MyFile & " modified " & FileDateTime(MyFolder & MyFile))
            Exit Sub   
        End If
        MyFile = Dir
    Loop
End Sub

【问题讨论】:

  • 从 If 中删除“Exit Sub”
  • 好吧,我是个混蛋。感谢您指出这一点。
  • 没问题。我知道那是什么感觉;)
  • @tkacprow 您可能希望发表您的评论作为答案,因为它是有效的。

标签: excel vba loops if-statement


【解决方案1】:

要么注释掉 Exit Sub,要么删除它。

Sub OpenAllFiles()
    Dim MyFile As Variant
    Dim MyFolder As String
    Dim FileCount As Integer

    MyFolder = "C:\Input Files\"
    MyFile = Dir(MyFolder)

    Do While (MyFile <> "")
        If Format(FileDateTime(MyFolder & MyFile), "YYYYMMDD") > Format(Now - 6, "YYYYMMDD")     Then    
            MsgBox ("Recent File Found.  " & MyFile & " modified " & FileDateTime(MyFolder & MyFile))
            'Exit Sub   
        End If
        MyFile = Dir
    Loop
End Sub

【讨论】:

    【解决方案2】:

    从 If 中删除“Exit Sub”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多