从另一个工作簿调用宏时,VBA代码退出循环

时间:2017-06-11 16:53:05

标签: vba excel-vba excel

下面提到的代码从工作簿读取数据并将其存储在各种数组中,然后进入循环以打开另一个工作簿,以在特定选项卡和位置中输入存储在数组中的值。

一旦输入,它从新打开的工作簿中调用另一个子程序,子程序运行正常(需要2-3分钟)才能运行,但是代码会自动退出循环(我的意思是它不会打开循环中的下一个文件)。是因为被调用宏的处理时间吗?我可以对这个问题使用一些见解,这将非常有帮助。在此先感谢:)

explain

End Sub

1 个答案:

答案 0 :(得分:0)

要确保错误来自ValidateDataNew MACRO,请先删除Sub GetData代码中可能出现的错误。

我们应该删除使用SelectSelectionActiveCell时可能出现的所有错误。相反,请使用完全限定的Range对象。

使用以下代码替换Do While ActiveCell.Value <> ""循环:

Dim lRow As Long

Set currentWB = ActiveWorkbook
lRow = 8 ' start scanning from row 8

' use a loop with fully qualifed range, not select
Do While currentWB.Worksheets(strListSheet).Range("B" & lRow).Value <> ""

    strFileName = currentWB.Worksheets(strListSheet).Range("B" & lRow).Offset(1, 1)
    strfilename2 = currentWB.Worksheets(strListSheet).Range("B" & lRow).Offset(1, 0)

    Set dataWB = Workbooks.Open(strFileName, UpdateLinks:=False, ReadOnly:=False)

    i = i + 1
    For k = 0 To tabcount - 1
        If values(i, k) <> "XXXXX" Then
            dataWB.Worksheets(Tabnames(0, k)).Range(celladdress(0, k)).Value = values(i, k)
        Else
        End If
    Next k

    strfilename2 = "'" & strfilename2 & "'" & "!ValidateDataNew"
    Application.Run strfilename2

    dataWB.Close SaveChanges:=True
    Set dataWB = Nothing

    lRow = lRow + 1 ' advance the row by 1
Loop
相关问题