VBA在循环中执行While while循环仅执行一次

时间:2018-10-31 15:45:33

标签: vba loops for-loop do-loops

我遇到一个问题,即我在For循环中的“ Do While循环”仅执行一次。我尝试实现以下目标:

我有一堆Excel文件(* .xlsm)位于同一文件夹中,其中包含一些员工的数据,我想遍历每个员工并获得一定数量。到目前为止,一切都很好。当我想“更改”员工姓名时,问题就变成了。

给出以下代码:

public class MyHandler implements RequestHandler<Map<String,Object>,String> {

    @Override
    public String handleRequest(Map<String,Object> eventMap, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("Body:" + eventMap.get("body"));
        logger.log("Headers:" + eventMap.get("headers"));
        logger.log("Method:" + eventMap.get("method"));
        logger.log("Params:" + eventMap.get("params"));
        logger.log("Query:" + eventMap.get("query"));
        return("{}");
    }
}

在For循环中的第一个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代码仅执行一次。 我发现是因为i变量在第一个do while循环完成时为空。 我需要有关如何重新设置myFile变量的帮助,以使do while循环与for循环一样执行多次。

1 个答案:

答案 0 :(得分:1)

Do While...Loop为空时,

myFile退出。因此,在下一次For...Next循环迭代中,myFile still 为空,因此第二次For循环迭代不会进入Do While循环,因为它的退出条件马上得到满足。

考虑移动此行:

myFile = Dir(myPath & myExtension)

For...Next循环中的第一件事。

...然后修复循环逻辑,这样您就不需要重新处理每个文件3次。

相关问题