我有一個for循環,其中靠近頂部我期望拋出一個錯誤,試圖設置一個變量等於工作簿。由於工作簿可能存在也可能不存在,因此返回該錯誤。 for循環在許多工作簿上循環,其中的任何數量都可能存在也可能不存在。循環看起來像這樣如何使用錯誤處理跳過循環迭代
for i = 1 to x
'get ready for to open the workbook
set = myworkbook = workbooks.open("path\myworkbook" & date)
'do a bunch of stuff after I get the workbook
next i
這工作都很好,但如果工作簿不存在,那麼我得到一個錯誤。現在我嘗試了一些錯誤處理技術。理想情況是,如果找不到工作簿,它會跳到循環的底部,然後進入下一個i。
我已經使用goto語句來跳轉到行的底部,但是隻有當該工作簿不存在時纔會起作用,並且在第二次傳遞時會拋出錯誤。在goto行之後,我嘗試了err.Clear,以便可以捕獲新錯誤。我已經嘗試了goto -1來清除錯誤,但這也不起作用。我嘗試了各種resume resume語句,但是如果因爲找到工作簿而沒有發生錯誤,那麼會拋出一個我無法處理的錯誤。在開始錯誤處理程序包裝變量設置行之前,我檢查錯誤編號,確保它顯示0但仍然會拋出錯誤。
似乎有很多方法來解決這個問題,我想我已經嘗試了所有。這不是我確定的獨特問題,我只需要朝着正確的方向前進。感謝您提供的任何幫助。
只要你不要以爲我沒有試過什麼解決方案,你首先想到的,這裏是我讀過一些其他問題:
For Loop, how to skip iterations
Difference between 'on error goto 0' and 'on error goto -1' -- VBA
On Error Goto 0 not resetting error trapping
Access VBA: Is it possible to reset error handling
Error handling only works once
爲什麼不使用'對於myworkbook.Worksheets中的每個ws'請參見[SO Excel文檔主題](https://stackoverflow.com/documentation/excel-vba/1144/loop-through-all-sheets-in-active -workbook/3685/retrieve-all-worksheets-names-in-active-workbook#t = 201707261350060188819) –
這些是單獨的工作簿,而不是工作簿中的工作表。他們都有一個獨特的文件名和路徑,這是由日期區分。注意文件名包括日期。 –