我正在尝试删除目录中除4个文件之外的所有文件。我知道如何使用下面的代码删除除特定文件以外的所有文件,但我确信它可以改进。是否有一个我没找到的缩短命令?
Sub Kill_Files()
Dim fname As String
fname = Dir$(ThisWorkbook.Path & "\*.*")
Do While Len(fname) > 0
If Left(fname, 10) <> "AAAAAAAAAA" Then
If Left(fname, 10) <> "BBBBBBBBBB" Then
If Left(fname, 10) <> "CCCCCCCCCC" Then
If Left(fname, 10) <> "DDDDDDDDDD" Then
Kill fname
End If
End If
End If
End If
fname = Dir$
Loop
End Sub
答案 0 :(得分:1)
您可以通过以下方式删除嵌套的IF
: -
Sub Kill_Files()
Dim fname As String
fname = Dir$(ThisWorkbook.Path & "\*.*")
Do While Len(fname) > 0
If Not (Left(fname, 10) = "AAAAAAAAAA" _
Or Left(fname, 10) = "BBBBBBBBBB" _
Or Left(fname, 10) = "CCCCCCCCCC" _
Or Left(fname, 10) = "DDDDDDDDDD") Then
MsgBox fname '<-- change this back to a Kill to see the code in action
End If
fname = Dir$
Loop
End Sub
答案 1 :(得分:1)
如果您询问如何合并If
语句,可以将此Sub
重写为:
Sub Kill_Files()
Dim fname As String
fname = Dir$(ThisWorkbook.Path & "\*.*")
Do While Len(fname) > 0
If Left(fname, 10) <> "AAAAAAAAAA" And Left(fname, 10) <> "BBBBBBBBBB" And Left(fname, 10) <> "CCCCCCCCCC" And Left(fname, 10) <> "DDDDDDDDDD" Then
Kill fname
End If
fname = Dir$
Loop
End Sub