回覆列表
-
1 # 使用者4942622965310
-
2 # 使用者3114586111456
在THISWORKBOOK物件使用OPEN事件: Private Sub Workbook_Open() Sheets(Sheets.Count).Activate End Sub
在THISWORKBOOK物件使用OPEN事件: Private Sub Workbook_Open() Sheets(Sheets.Count).Activate End Sub
Private Sub Workbook_open()中的Workbook_open事件會讓此工作簿開啟時自動執行後面的程式碼,剛好程式碼執行中出現錯誤,所以就出現了“開啟工作簿後彈出報錯資訊”的情況。
報錯原因:Call後面呼叫的do_what未定義(被找到)。
舉個類似的簡單栗子:
上圖是兩個過程。
下面的過程是最基礎的VBA程式碼形式,Sub後的“test1”是這個過程的名字,這個可以自己命名。
上面的過程比較特別,用的Workbook_open事件,表示這個工作簿開啟時自動執行其中的程式碼。三行程式碼裡,最上和最下是規範寫法,只有中間那行是要執行的程式碼本身。這行程式碼中,Call表示呼叫,這句的意思是呼叫“test2”這個過程,顧名思義,把“test2”的程式碼調過來使用。
問題在於,這裡沒有名字為“test2”的過程,所以這行程式碼執行時會報錯。
將Call test2中的test2改為test1,就能正常的呼叫下面的那個過程了;或者將下面的過程的名字改為test2,也能呼叫;或者直接把Call test2這句程式碼刪了,什麼都不會發生。對應原回答中的“報錯解決”。
建議題主上手這個簡單栗子加深理解。
知道了這些程式碼的執行邏輯,具體的解決方法就看題主了,是想辦法找到do_what的程式碼部分,還是自己寫一個do_what。