VBA編程時(shí)常用的提速方法作者:網(wǎng)絡(luò) | 來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)摘 | 時(shí)間:2008-05-07 | 閱讀權(quán)限:游客 | 會(huì)員幣:0 | 【大 中 小】 一、讓代碼"專(zhuān)注"運(yùn)行 二、單元格(區(qū)域)寫(xiě)法的選擇 三種寫(xiě)法各有優(yōu)缺點(diǎn),但以取值速度論,cells(1,1)最快,[A1]寫(xiě)法最慢,Range("A1")比cells(1,1)稍慢,但優(yōu)點(diǎn)是在VBE中輸入可以顯示屬性方法等快速輸入信息.此外,要明示對(duì)象屬性而不要依賴(lài)于對(duì)象的默認(rèn)屬性,這是一種好的編程習(xí)慣.下面兩句,第二句要比第一句快得多: 三、比較語(yǔ)句 1.分解IF語(yǔ)句 優(yōu)于 IF A AND B THEN 與 2.并列的條件使用elseif或select,elseif寫(xiě)起來(lái)麻煩,但速度優(yōu)于select 3.將最可能的條件及容易計(jì)算的條件放在前面 上面分解后的A應(yīng)當(dāng)比B出現(xiàn)的機(jī)會(huì)更大,或者需要進(jìn)行計(jì)算更容易計(jì)算出結(jié)果,select語(yǔ)句放在前面的case也應(yīng)這樣 4.Iif速度慢于if/else 四、循環(huán)語(yǔ)句 1.For 語(yǔ)句快于DO/WHILE,這是因?yàn)镕OR語(yǔ)句的增量部分是VBA自帶的,特別是步長(zhǎng)為1的更明顯 2.For/each快于for/to 五、使用With語(yǔ)句 with語(yǔ)句不僅僅是簡(jiǎn)化了寫(xiě)法,速度也大大提升了。 六、盡量不用Variant類(lèi)型 這不用多說(shuō)吧,使用Option Explicit是一個(gè)好習(xí)慣。 給返回值一個(gè)明確的類(lèi)型,會(huì)對(duì)提速有好處。雖然有時(shí)候我們覺(jué)得不明顯,這是很多人使用left$,而不用left,使用int%,而不用int的原因(你是否對(duì)這種寫(xiě)法好奇過(guò)?)。但如果你一開(kāi)始你就沒(méi)有DIM,這就很有必要了。 七、關(guān)注內(nèi)存 對(duì)占用內(nèi)存較多的對(duì)象變量,不要時(shí)要記住set=nothing,如果你對(duì)你的機(jī)器內(nèi)存的容量沒(méi)有信心,應(yīng)避免使用遞歸程序,遞歸的過(guò)程會(huì)吃掉大量的內(nèi)存。 八、使用工作表函數(shù)(方法) 有些工作表函數(shù)(方法)速度是很快的,比如FIND,VLOOKUP等,要記得使用它們,不要花力氣去做不討好的事。當(dāng)使用工作表函數(shù)時(shí),操作對(duì)象應(yīng)避免使用內(nèi)存變量,那樣反而慢。 九、劃零為整 1.內(nèi)存變量的運(yùn)算速度大大快于RANGE對(duì)象。 Dim arr() 2)將內(nèi)存數(shù)組數(shù)據(jù)寫(xiě)入RANGE。在內(nèi)存數(shù)組經(jīng)過(guò)計(jì)算處理后,寫(xiě)回時(shí)只需下句就可以了。 range(“A1:F65536”)= arr 2.非數(shù)組變量快于數(shù)組變量。當(dāng)數(shù)組很大時(shí),根據(jù)下標(biāo)提取數(shù)值會(huì)比從單個(gè)變量慢得多,這時(shí)可以把需要多 次使用的數(shù)組值先賦給內(nèi)存變量。 3.減少使用REDIM的次數(shù)。REDIM是對(duì)數(shù)組操作中最費(fèi)時(shí)的動(dòng)作??梢韵阮A(yù)算大小,不夠或多余時(shí)再進(jìn)行調(diào)整。 轉(zhuǎn)載請(qǐng)注明:本文來(lái)自:Excel吧 (www.) 詳細(xì)出處參考:http://www./Art/Html/264.html |
|