稍微提醒一下,在vba使用 [ ](中括號,又稱方括號) 對速度的"嚴重”影響

最近比較常逛麻辣,雖然我沒帳號
發現那邊程式非常的喜歡用 [] 來寫
例如:
range("a1") 用 [a1] 來代替

好處是可以少打很多字,程式碼看起來也比較漂亮
但壞處可就嚴重了,大量計算時,會嚴重影響效能


舉例簡單解釋一下在vba中
[] = Application.Evaluate() 的縮寫
[a1] = Application.Evaluate("a1")

a1 不代表位置,只是文字
vba會認得是因為Application.Evaluate先轉換過
vba才能知道a1 代表 cells(1,1) 或 range("a1")
而這個轉換動作,其實是經過很多程序的,這也是影響效能的原因


簡單的測試用程式,有興趣的跑看看吧

Sub test()

Application.ScreenUpdating = False
'為了避免螢幕更新,造成測試時間拉長,先關閉
ttt = Timer
For i = 1 To 99999
'以下四行,測試時,請一次執行一行,另外3行先禁用
' Cells(1, 1) = i
' Range("a1") = i
' [a1] = i
' Application.Evaluate("a1") = i
Next
Debug.Print Timer - ttt
Application.ScreenUpdating = True

End Sub



用 cells 最快 range 次之,[] =Application.Evaluate() 最慢,而且慢很多
如果是用在迴圈之外,沒什麼資料的表格就算了
當有數萬筆資料,或是程式需要層層迴圈計算時,這可是巨大的影響

建議改掉用[]的習慣,用標準寫法比較好

稍微提醒一下,在vba使用 [  ](中括號,又稱方括號) 對速度的"嚴重”影響
2017-11-28 5:28 發佈
感謝樓主的分享,小弟收下了




snare wrote:
最近比較常逛麻辣,...(恕刪)
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?