我有一些史前代碼,我必須檢查它是否仍然與Office 2016一起工作。對於Office 2013,它工作起來就像一個魅力,但現在與新版本我得到一個錯誤。這就是我想要的:VBA刪除工作表拋出運行時錯誤9,但仍然刪除工作表
在工作簿A我有一個工作表WS-A,我想複製到一個新的工作簿B.在此之前,我創建了一個WS-A(稱爲WA- A-Copy)並進行一些更改。之後,我將WS-A-Copy複製到新的工作簿B(創建WS-B)。最後,我想從原始工作簿A中刪除WS-A-Copy,但是當我嘗試刪除此工作表時,出現運行時錯誤9(下標超出範圍)。 ( - 在立即窗口錯誤發生前的權利類型調試模式「activeworkbook.Name?」)
WorkbookA = ActiveWorkbook.Name
WS-A-Copy = ActiveSheet.Name
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
'go to WS-A-Copy in workbook B and add a copy of the values and formats
WS-B = ActiveSheet.Name
Sheets(WS-B).Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
Range("A1").Select
'Go back to Workbook A and delete WS-A-Copy
Windows(WorkbookA).Activate
If SheetExists(WS-A-Copy) Then
Sheets(WS-A-Copy).Delete <-- Runtime Error 9
End If
我已經檢查,如果我使用正確的工作簿。 我還檢查工作表是否存在於當前工作簿中。 所以這兩個都是真的。
但是,爲什麼我得到這個運行時錯誤?爲什麼此工作表WS-A-Copy仍然在工作簿A中被刪除?爲什麼在Office 2016中這是一個問題,但是對於Office 2013,這很好嗎?
有人可以給我一個提示嗎?提前致謝!
您是如何得到像這樣命名的變量的?我的excel 2013編譯器不會傳遞它們 – user3598756
爲了您的目的,完全限定工作簿變量並且不使用select或activate。可能這是造成錯誤的原因 – RGA
@ user3598756:我剛更改變量名稱以使代碼更具可讀性 –