乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

       我的人生寶庫 2019-12-14

      相信在很多的時(shí)候,你辛辛苦苦積累寫下來的代碼,運(yùn)行速度并不是那么的完美,也就是說執(zhí)行的效率低。那么你是否知道為什么你寫的代碼就運(yùn)行這么慢呢?原因在哪?且聽我慢慢給你道來,只要你做到以下說的幾點(diǎn),相信你的代碼運(yùn)行效率會(huì)提升80%以上。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      關(guān)閉屏幕刷新功能

      當(dāng)你寫的代碼其中有改變工作表的顯示內(nèi)容或格式時(shí),因?yàn)檫@個(gè)時(shí)候隨著程序的執(zhí)行,電腦的屏幕需要不斷改變內(nèi)容的顯示,就是不停止的執(zhí)行刷新頁面,那么在這個(gè)時(shí)候關(guān)閉屏幕刷新可以明顯加快運(yùn)行速度,如下面的代碼所示。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      以上代碼過程中使用兩次For...Next語句給A1單元格填充數(shù)據(jù),最后使用Msgobx顯示兩次運(yùn)行的時(shí)間對比,如下所示。我們可以看到在第一次循環(huán)時(shí)關(guān)閉屏幕刷新(Application.ScreenUpdating = False),將看不到代碼的執(zhí)行過程,其實(shí)程序在不停的執(zhí)行當(dāng)中,只是我們看不到而已,但可以提升代碼的執(zhí)行速度。如下圖所示的消息框顯示兩次代碼的運(yùn)行時(shí)間,可以看出關(guān)閉屏幕刷新后運(yùn)行時(shí)間遠(yuǎn)遠(yuǎn)小于開啟屏幕刷新時(shí)運(yùn)行的時(shí)間,也就是說我們關(guān)閉屏幕刷新,可以明顯提升速度。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      使用工作表函數(shù)

      相信有時(shí)候我們用VBA處理數(shù)據(jù)的時(shí)候,經(jīng)常會(huì)遇到需要自己寫函數(shù),或者你有沒有想過其實(shí)可以直接引用工作表函數(shù),在VBA中使用工作表函數(shù)比僅僅使用VBA代碼的運(yùn)行時(shí)間要快得多,我們看看如下的例子吧!

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      這個(gè)代碼的過程分別使用VBA代碼進(jìn)行累計(jì)加法和直接調(diào)用工作表Sum函數(shù)對單元格區(qū)域進(jìn)行求和計(jì)算,最后使用消息顯示運(yùn)行時(shí)間對比。Cells(1, 2) = Cells(1, 2) + Cells(i, 1),這是利用循環(huán)和累加,也就是k=k+1進(jìn)行累加求A1:A30000和;而Cells(2, 2) = Application.WorksheetFunction.Sum(Range('A1:A30000'))的意思就是直接利用工作表函數(shù)SUM進(jìn)行求和。

      程序執(zhí)行的結(jié)果對比如下所示,其實(shí)您明顯發(fā)現(xiàn)使用工作表函數(shù)的速度明顯小于我們使用代碼的速度。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      使用更快更好的單元格操作方法

      在某些時(shí)候我們需要對單元格區(qū)域進(jìn)行操作時(shí),在這個(gè)時(shí)候也許你會(huì)選擇使用Find、Replace、SpecialCells等方法可以比使用VBA代碼獲得更快的速度,如下面的代碼所示:

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      在這個(gè)過程分別使用VBA代碼和使用Replace、SpecialCells方法刪除工作表A列內(nèi)容為“Excel”的單元格所在的行,

      MSgbox顯示兩種方法的運(yùn)行時(shí)間,可以看出使用Replace方法和SpecialCells方法的運(yùn)行時(shí)間要遠(yuǎn)遠(yuǎn)小于使用VBA代碼運(yùn)行的時(shí)間,如下圖所示,所以說我們在選擇某些操作表格的方法時(shí)候,需要注意一下使用的方法。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      With語句使用

      我們在上面的例子看到我們其實(shí)已經(jīng)在使用這個(gè)語句結(jié)構(gòu)了,也就是說我們在遇到需要重復(fù)引用同一個(gè)對象時(shí)可以使用With語句來獲得較快的運(yùn)行速度,如下面的代碼所示:

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      在這個(gè)代碼過程在數(shù)據(jù)填充的時(shí)候填充時(shí)使用With-End with語句來引用工作表對象,從而讓代碼獲得較快的運(yùn)行速度。

      需要注意的是我們的With語句在一個(gè)單一對象或一個(gè)用戶定義類型上執(zhí)行一系列的語句,他的用法如下:

      With Object

      [statements]

      End With

      其中參數(shù)object是必需的,一個(gè)對象或用集合對象;參數(shù)statements是要執(zhí)行的一條或多條語句。With語句可以對某個(gè)對象執(zhí)行一系列的語句,而不用重復(fù)指出對象的名稱。在運(yùn)行時(shí)只需引用對象一次而不是在每個(gè)屬性賦值時(shí)都要引用,從而獲得較快的運(yùn)行速度。如下顯示兩種方法的運(yùn)行時(shí)間,可以看出使用With語句來引用工作表對象的運(yùn)行速度和沒有使用引用的速度相差幾百倍,所以在能使用對象引用的就盡量使用,這樣可以明顯加快程序的執(zhí)行速度。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      減少使用激活或者選擇語句

      為啥要是這個(gè)減少激活或者選擇語句呢?因?yàn)槲覀冊阡浿坪甑臅r(shí)候,可以看到其實(shí)錄制的代碼中存在非常多的這樣的語句,但是這些語句是可有可無的,因?yàn)樗麄兊拇嬖诿黠@拖累了我們執(zhí)行速度。請看如下代碼所示:

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      在這代碼的過程分別使用錄制宏所得的代碼,其中包含了激活、選擇單元格、工作表,后面是我們修改后的代碼給單元格填充,消息框顯示兩種方法的運(yùn)行時(shí)間,可以看出后一種方法的運(yùn)行時(shí)間要遠(yuǎn)遠(yuǎn)小于錄制宏所得的代碼的運(yùn)行時(shí)間,如下所示。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

      以上就是我們今天要和你說的我們常用的幾種加快代碼執(zhí)行速度的方法,當(dāng)然還有其他的方法,我們會(huì)在下期一一介紹,每天一個(gè)小知識點(diǎn),你會(huì)進(jìn)步一大步。

      如果有不明白的或者不懂的可以在下方留言,我們會(huì)一一解答的。

      Excel VBA代碼優(yōu)化,別怕,這個(gè)功能只需要2分鐘搞定

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多