Gra*_*ler 3 excel vba for-loop excel-vba
我正在使用一个宏列出我选择的任何目录中的所有文件名.我正在编写代码,将文件名拆分为以后可以使用的块.文件名列表从单元格F6开始,沿列向下运行.这是我到目前为止编写的代码:
Dim ContractNum As String
Dim InvNum As String
Dim FileRng As Range
Dim FileLastRow As Long
Dim File As Range
FileLastRow = Sheet1.Range("F" & Rows.Count).End(xlUp).Row
Set FileRng = Sheet1.Range("F6:F" & FileLastRow).SpecialCells(xlCellTypeConstants, 23)
For Each File In FileRng
If File = "Invoice.zip" Or File = "Thumbs.db" Then
File.EntireRow.Delete
End If
Next File
For Each File In FileRng
ContractNum = Left(File, 4)
InvNum = Mid(File, 8, 6)
File.Offset(0, -5) = ContractNum
File.Offset(0, -4) = InvNum
Next File
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经完成了那部分工作.我遇到的问题是,在所有使用此宏的目录中都有不需要的文件,例如"Thumbs.db"或"Invoice.zip".我遇到问题的代码如下:
For Each File In FileRng
If File = "Invoice.zip" Or File = "Thumbs.db" Then
File.EntireRow.Delete
End If
Next File
Run Code Online (Sandbox Code Playgroud)
我想要做的是扫描整个文件名列表,如果遇到文件名"Thumbs.db"或"Invoice.zip",删除整行.到目前为止,这工作......有点儿.例如,如果我的列表中有两个名为"Thumbs.db"和"Invoice.zip"的文件,我必须运行两次以删除它们.显然,我想一下子把它们全部擦掉.
根据我的评论,将for循环更改为:
For i = filelastrow to 6 step -1
If Sheet1.Cells(i,6) = "Invoice.zip" Or Sheet1.Cells(i,6) = "Thumbs.db" Then
Sheet1.row(i).Delete
End If
Next File
Run Code Online (Sandbox Code Playgroud)
问题是,当一行被删除时,下面的一行成为该行,然后循环在它移动到下一行时跳过它.然后它也将在末尾移动空行.
通过倒退,这个问题就消除了.
归档时间: |
|
查看次数: |
374 次 |
最近记录: |