稍微提醒一下,在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() 最慢,而且慢很多
如果是用在迴圈之外,沒什麼資料的表格就算了
當有數萬筆資料,或是程式需要層層迴圈計算時,這可是巨大的影響

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

2017-11-28 5:28 #1
感謝樓主的分享,小弟收下了




snare wrote:
最近比較常逛麻辣,...(恕刪)
限制級
您即將進入之討論頁 需滿18歲 方可瀏覽。
提醒:內容可能因過於寫實、驚悚而令人感到不舒服,是否繼續觀看?

根據「電腦網路內容分級處理辦法」修正條文第六條第三款規定,已於該限制級網頁,依台灣網站分級推廣基金會規定作標示。
評分
複製連結