當您的宏被編譯或者是運行(后臺編譯)時,會解析對象及它們的方法和屬性的引用。經(jīng)過宏編譯解析的引用比在程序運行時必須被解析的引用要更快,因此,您最好跳過后臺編譯。
如果您聲明變量和參數(shù)為特定的對象類型(比如Range或),VBA在編譯您的程序時將解析引用為這些對象的屬性和方法。(如果要查找指定對象類型列表,請參見”對象瀏覽器”)
減少變量的作用范圍并及時釋放變量
主要是對象變量,在其使用完后,及時釋放。例如,
Dim TempObj As ,AnObj As
Set TempObj=New
Set AnObj=TempObj
Set TempObj=Nothing ‘釋放對象變量
使用常量
變量會發(fā)生變化出現(xiàn)未結(jié)束字符串常量錯誤,重裝瀏覽器能解決嗎,因此VBA在程序運行時必須獲取當前變量的值。
在應用程序中使用常量會使程序運行更快。在編譯您的代碼時,常量僅計算一次并被存儲。
常量也能使您的宏程序更易閱讀和維護。如果在您的程序中有一些不變的字符串或數(shù)值的話,您可以聲明它們作為常量。
盡可能使用早期綁定
綁定是指將程序調(diào)用與實際代碼相匹配。為了實現(xiàn)早期綁定,先應創(chuàng)建對對象庫的引用。早期綁定可以在代碼中使用定義在對象庫中的常量,可以自動列出對象的方法和屬性,但早期綁定只有在所控制的對象擁有獨立的類型庫或?qū)ο髱煳募胚m用且還需要已安裝了特定的庫。而后期綁定則只是在運行時才知道對象的類型并對對象進行引用,因此不具備上述特點。
使用早期綁定創(chuàng)建對象通常更有效率,使代碼能獲得更好的性能。因為對象的早期綁定引用在編譯時可以通過VBE的解析,而不是通過運行時模塊解析,因此早期綁定的性能要好得多。雖然在程序設(shè)計時不可能總是使用早期綁定,但應該盡可能使用它。
結(jié)語
當然,代碼優(yōu)化可能不是絕對必要的,這依賴于您要做的工作……如果您正好編寫了一個快速且簡短的或者是一次性使用且與速度和/或簡潔要求無關(guān)的代碼,您就不需要優(yōu)化代碼。
但另一方面,如果您處理一個帶有很多數(shù)據(jù)、工作簿、工作表等大的工程,再次檢查您第一次編寫好的代碼,看看是否您的代碼需要優(yōu)化,而這樣做總是值得的。
最終,您將養(yǎng)成編寫代碼的好習慣,將會使您的代碼更簡潔、運行更快速、并且容易為您自已和他人閱讀和調(diào)試。同時出現(xiàn)未結(jié)束字符串常量錯誤,重裝瀏覽器能解決嗎,由于您的代碼簡潔,因而輸入更快,工作效率更高。