VBA Do while Loop in For Loop只执行一次
VBA Do while Loop in For Loop executes only once
我有一个问题,我的 Do While 循环在 For 循环中只执行一次。我尝试实现以下目标:
我有一堆 excel 文件 (*.xlsm),位于包含一些员工数据的同一个文件夹中,我想遍历每个文件并获得一定数量。到目前为止,一切都很好。当我想 "change" 员工姓名时,问题就出现了。
给定以下代码:
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Select A Target Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
myExtension = "*.xlsm"
myFile = Dir(myPath & myExtension)
For i = 1 To 3
xCallsEin = 0
xMa = wb.Sheets(2).Cells(i, 1)
MsgBox xMa
Do While myFile <> ""
Set wb2 = Workbooks.Open(Filename:=myPath & myFile)
DoEvents
xCallsEinTemp = Application.WorksheetFunction.VLookup(xMa, wb2.Sheets(1).Range(Columns(2), Columns(6)), 4, 0)
xCallsEin = xCallsEin + xCallsEinTemp
wb2.Close SaveChanges:=False
DoEvents
myFile = Dir
wb1.Sheets(1).Cells(i + 6, 2) = xCallsEin
Loop
Next i
Do while 代码仅执行一次,即 For 循环中的第一个 i
。
我想通了,因为在第一个 do while 循环完成时 myFile
变量是空的。
我需要有关如何再次将 myFile
变量设置为某个值的帮助,以便 do while 循环执行与 for 循环一样多的次数。
Do While...Loop
在 myFile
为空时退出。所以在下一个 For...Next
循环迭代中,myFile
仍然是 空因此第二个 For
循环迭代不会进入 Do While
循环,因为它的退出条件马上就满足了。
考虑移动这条线:
myFile = Dir(myPath & myExtension)
For...Next
循环中的第一件事。
...然后修复循环逻辑,这样您就不需要重新处理每个文件 3 次了。
我有一个问题,我的 Do While 循环在 For 循环中只执行一次。我尝试实现以下目标:
我有一堆 excel 文件 (*.xlsm),位于包含一些员工数据的同一个文件夹中,我想遍历每个文件并获得一定数量。到目前为止,一切都很好。当我想 "change" 员工姓名时,问题就出现了。
给定以下代码:
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Select A Target Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
myExtension = "*.xlsm"
myFile = Dir(myPath & myExtension)
For i = 1 To 3
xCallsEin = 0
xMa = wb.Sheets(2).Cells(i, 1)
MsgBox xMa
Do While myFile <> ""
Set wb2 = Workbooks.Open(Filename:=myPath & myFile)
DoEvents
xCallsEinTemp = Application.WorksheetFunction.VLookup(xMa, wb2.Sheets(1).Range(Columns(2), Columns(6)), 4, 0)
xCallsEin = xCallsEin + xCallsEinTemp
wb2.Close SaveChanges:=False
DoEvents
myFile = Dir
wb1.Sheets(1).Cells(i + 6, 2) = xCallsEin
Loop
Next i
Do while 代码仅执行一次,即 For 循环中的第一个 i
。
我想通了,因为在第一个 do while 循环完成时 myFile
变量是空的。
我需要有关如何再次将 myFile
变量设置为某个值的帮助,以便 do while 循环执行与 for 循环一样多的次数。
Do While...Loop
在 myFile
为空时退出。所以在下一个 For...Next
循环迭代中,myFile
仍然是 空因此第二个 For
循环迭代不会进入 Do While
循环,因为它的退出条件马上就满足了。
考虑移动这条线:
myFile = Dir(myPath & myExtension)
For...Next
循环中的第一件事。
...然后修复循环逻辑,这样您就不需要重新处理每个文件 3 次了。