下面提到的代码从工作簿读取数据并将其存储在各种数组中,然后进入循环以打开另一个工作簿,以在特定选项卡和位置中输入存储在数组中的值。
一旦输入,它从新打开的工作簿中调用另一个子程序,子程序运行正常(需要2-3分钟)才能运行,但是代码会自动退出循环(我的意思是它不会打开循环中的下一个文件)。是因为被调用宏的处理时间吗?我可以对这个问题使用一些见解,这将非常有帮助。在此先感谢:)
explain
End Sub
答案 0 :(得分:0)
要确保错误来自ValidateDataNew
MACRO,请先删除Sub GetData
代码中可能出现的错误。
我们应该删除使用Select
,Selection
和ActiveCell
时可能出现的所有错误。相反,请使用完全限定的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