【发布时间】:2020-02-14 17:14:07
【问题描述】:
如何在 do 循环中将保留变量重置为 0?我要重置的是idx。
idx 表示正在搜索的子文件夹的编号。
例如,总共有 100 个子文件夹,因此 idx max=100。当宏找到匹配文件夹时,例如。 50.它保留了idx=50。所以对于新的搜索,idx 不会从头开始,而是从 51、52、53...100 继续新的搜索。所以如果匹配的子文件夹 idx 为 20,由于宏没有经过 0-50,它会将其视为未找到并退出循环。
我可以在哪里重置这个变量?
Dim idx As Integer
For idx = 0 To UBound(Array_SubFolders)
Dim fileName As String
fileName = Dir(Array_SubFolders(idx) & "/*.xlsb")
On Error Resume Next
Do While fileName <> ""
FullPathFileName = Array_SubFolders(idx) & "\" & fileName
If (Left(fileName, 12) = "Ass_Sheet_") Then
Dim prodName As String
prodName = ThisWorkbook.Sheets("Master").Cells(MasterRow, 1).Value
If (InStr(fileName, prodName) > 0) Then
Call prc_Import_Values(fileName)
MasterRow = MasterRow + 1
End If
End If
fileName = Dir()
Loop
Next
MsgBox "--- finished ---"
【问题讨论】:
-
1) 您似乎遗漏了一些代码,
next idx(可能还有其他东西)遗漏了 2) “休息”是指“重置”吗? 3)prc_Import_Values是递归函数吗?上面是它的代码吗? -
这是一个函数吗?
Array_SubFolders来自哪里? -
@cybernetic.nomad 你是对的,1)“休息”=重置。 @)prc_Import_Values 是在宏找到正确的文件夹和文件后导入值的另一个函数。那部分工作得很好,我没有把代码放在这里。这里唯一的问题是重置 idx,所以当新的搜索开始时,它将从第一个子文件夹开始搜索,该数组存储所有检测到的子文件夹。
-
@mdelapena array_Subfolders 是存储所有子文件夹的另一个函数,我发布的代码是为了找到匹配文件夹。
-
旁注 - 我认为您应该为此
"/*.xlsb")使用反斜杠
标签: excel vba loops for-loop directory