久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA編程時常用的提速方法 >> VBA基礎(chǔ) >> Excel吧

 hanzinu 2011-05-02

VBA編程時常用的提速方法作者:網(wǎng)絡(luò) | 來源:網(wǎng)絡(luò)轉(zhuǎn)摘 | 時間:2008-05-07 | 閱讀權(quán)限:游客 | 會員幣:0 | 【大 中 小】
速度是程序設(shè)計永恒的熱門話題,使用VBA編程當(dāng)然也不例外,這里就將在網(wǎng)上收集到的VBA編程常用提速的方法與自己在VBA編程時的心得整理一下,上傳到這里.

一,、讓代碼"專注"運行
1.將Application.ScreenUpdating設(shè)定為False,關(guān)閉屏幕更新.這個是最基本的加速方法,在程序結(jié)束設(shè)還原時設(shè)定為True.
2.將Application.EnableEvents設(shè)定為False,禁止觸發(fā)事件.這個在有其它自定義事件時,如定義了Worksheet_Change時,就有需要設(shè)定,還原時設(shè)定為True.
3.將Application.Interactive設(shè)定為False,禁止交互模式.當(dāng)我們運行程序時,如刪除有數(shù)據(jù)的工作表而不需要提示,這時就可以使用,見意這段代碼只加在需要的地方,之后就立即開啟.
4.將Application.Calculation設(shè)定為xlCalculationManual,將計算模式設(shè)定為手動.當(dāng)工作簿中有大量公式時,這樣的設(shè)定提速特別明顯,還原時設(shè)定為xlCalculationAutomatic.

二,、單元格(區(qū)域)寫法的選擇
單元格(區(qū)域)寫法有3種,以A1單元格為例,可以使用
1.Cell對象寫法:cells(1,1)
2.Range對象寫法:Range("A1")
3.名稱寫法:[A1]

三種寫法各有優(yōu)缺點,但以取值速度論,cells(1,1)最快,[A1]寫法最慢,Range("A1")比cells(1,1)稍慢,但優(yōu)點是在VBE中輸入可以顯示屬性方法等快速輸入信息.此外,要明示對象屬性而不要依賴于對象的默認(rèn)屬性,這是一種好的編程習(xí)慣.下面兩句,第二句要比第一句快得多:
x= cells(1,1)
x= cells(1,1).value

三、比較語句

1.分解IF語句
如:
IF A THEN
IF B THEN

優(yōu)于

IF A AND B THEN


IF A THEN
...
ELSE IF B THEN
優(yōu)于
IF A OR B then

2.并列的條件使用elseif或select,elseif寫起來麻煩,但速度優(yōu)于select

3.將最可能的條件及容易計算的條件放在前面

上面分解后的A應(yīng)當(dāng)比B出現(xiàn)的機會更大,或者需要進(jìn)行計算更容易計算出結(jié)果,select語句放在前面的case也應(yīng)這樣

4.Iif速度慢于if/else

四,、循環(huán)語句

1.For 語句快于DO/WHILE,這是因為FOR語句的增量部分是VBA自帶的,特別是步長為1的更明顯

2.For/each快于for/to

五,、使用With語句

with語句不僅僅是簡化了寫法,速度也大大提升了。

六,、盡量不用Variant類型

這不用多說吧,使用Option Explicit是一個好習(xí)慣,。

給返回值一個明確的類型,會對提速有好處。雖然有時候我們覺得不明顯,這是很多人使用left$,而不用left,使用int%,而不用int的原因(你是否對這種寫法好奇過,?),。但如果你一開始你就沒有DIM,這就很有必要了。

七,、關(guān)注內(nèi)存

對占用內(nèi)存較多的對象變量,不要時要記住set=nothing,如果你對你的機器內(nèi)存的容量沒有信心,應(yīng)避免使用遞歸程序,遞歸的過程會吃掉大量的內(nèi)存,。

八、使用工作表函數(shù)(方法)

有些工作表函數(shù)(方法)速度是很快的,比如FIND,VLOOKUP等,要記得使用它們,不要花力氣去做不討好的事,。當(dāng)使用工作表函數(shù)時,操作對象應(yīng)避免使用內(nèi)存變量,那樣反而慢,。

九、劃零為整
當(dāng)需要對較大區(qū)域進(jìn)行相同的操作時,可以先使用union等方法收集,一次進(jìn)行,。在Range對象上尤其明顯,內(nèi)容,、格式變更,刪除等等一個一個的處理要比把這些選定后一起處理慢得多的多。
 
十、使用內(nèi)存數(shù)組

1.內(nèi)存變量的運算速度大大快于RANGE對象,。
1)將RANGE數(shù)據(jù)寫入內(nèi)存數(shù)組,。下面兩句將生成一個65536行,6列的數(shù)組。用這種方法產(chǎn)生的數(shù)組都是兩維數(shù)組,即使引用的RANGE只有一行或一列,。下標(biāo)始于1,不受option base設(shè)置的影響,。arr必需聲明為Variant類型。

Dim arr()
arr=range(“A1:F65536”)

2)將內(nèi)存數(shù)組數(shù)據(jù)寫入RANGE,。在內(nèi)存數(shù)組經(jīng)過計算處理后,寫回時只需下句就可以了,。

range(“A1:F65536”)= arr

2.非數(shù)組變量快于數(shù)組變量。當(dāng)數(shù)組很大時,根據(jù)下標(biāo)提取數(shù)值會比從單個變量慢得多,這時可以把需要多

次使用的數(shù)組值先賦給內(nèi)存變量,。

3.減少使用REDIM的次數(shù),。REDIM是對數(shù)組操作中最費時的動作??梢韵阮A(yù)算大小,不夠或多余時再進(jìn)行調(diào)整,。

轉(zhuǎn)載請注明:本文來自:Excel吧 (www.) 詳細(xì)出處參考:http://www./Art/Html/264.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多