Workbook_Open和Auto_Open都能實(shí)現(xiàn)在打開(kāi)工作簿時(shí)自動(dòng)運(yùn)行自定義代碼的功能。Workbook_Open似乎要取代Auto_Open,而Auto_Open的存在似乎只是為了兼容以前的程序。然而,對(duì)于Excel開(kāi)發(fā)人員來(lái)說(shuō),Auto_Open仍然很有用。
對(duì)于初學(xué)者來(lái)說(shuō),細(xì)致地了解Workbook_Open和Auto_Open,解開(kāi)對(duì)這兩個(gè)過(guò)程的一些疑惑,有助于更好地學(xué)習(xí)或閱讀相關(guān)代碼,也能夠更好地在自已編寫(xiě)的代碼中合理使用它們。
Workbook_Open和Auto_Open放置的位置不同 Workbook_Open必須位于ThisWorkbook模塊中,而Auto_Open必須放置在標(biāo)準(zhǔn)模塊中,如下圖所示。 在ThisWorkbook模塊中,可以直接在VBE編輯器上方左邊的下拉框中選擇Workbook,代碼框架會(huì)自動(dòng)生成。 在標(biāo)準(zhǔn)模塊中,必須手動(dòng)輸入Sub Auto_Open()。
Application.EnableEvents事件的影響 Workbook_Open受Application.EnableEvents事件的影響,而Auto_Open不會(huì)。也就是說(shuō),當(dāng)Application.EnableEvents事件設(shè)置為False后,Excel不會(huì)觸發(fā)Workbook_Open。因此,如果你擔(dān)心因Application.EnableEvents事件設(shè)置而影響打開(kāi)工作簿時(shí)自動(dòng)運(yùn)行自定義的代碼,那么可以使用Auto_Open,這樣不管Application.EnableEvents事件的狀態(tài)如何,都能確保用戶(hù)打開(kāi)工作簿時(shí)執(zhí)行自定義代碼。
注:在打開(kāi)工作簿的同時(shí)按住SHIFT鍵,會(huì)禁用Workbook_Open()和Auto_Open()。
使用代碼自動(dòng)打開(kāi)工作簿時(shí)的影響 如果使用代碼自動(dòng)打開(kāi)含有Workbook_Open或Auto_Open的工作簿,那么將不會(huì)觸發(fā)Auto_Open代碼但會(huì)觸發(fā)Workbook_Open代碼。因此,Auto_Open適合于由用戶(hù)自已打開(kāi)的工作簿,而不適用于由編寫(xiě)的代碼自動(dòng)打開(kāi)的工作簿。也就是說(shuō),如果您僅想讓用戶(hù)自已打開(kāi)時(shí)執(zhí)行自定義的代碼,那么使用Auto_Open。
如果想要在自動(dòng)打開(kāi)工作簿時(shí)禁用Workbook_Open,那么可以在打開(kāi)該工作簿前設(shè)置Application.EnableEvents事件為False。 如果想要在自動(dòng)打開(kāi)工作簿時(shí)運(yùn)行Auto_Open,那么可以使用Workbook.RunAutoMacros方法。
Workbook_Open和Auto_Open同時(shí)存在時(shí)的調(diào)用順序 如果某工作簿中同時(shí)存在Workbook_Open和Auto_Open,那么將首先調(diào)用Workbook_Open。在Workbook_Open和Auto_Open調(diào)用完后,再執(zhí)行customUI_OnLoad()回調(diào)程序。即,工作簿打開(kāi)時(shí)的調(diào)用順序:
--------------------------------------
如果您對(duì)本文介紹的內(nèi)容有什么建議或好的示例,歡迎發(fā)送郵件給我:xhdsxfjy@163.com 本文屬原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系我或者注明出處。
關(guān)注《完美Excel》微信公眾賬號(hào): |
|