
發現那邊程式非常的喜歡用 [] 來寫
例如:
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() 最慢,而且慢很多
如果是用在迴圈之外,沒什麼資料的表格就算了
當有數萬筆資料,或是程式需要層層迴圈計算時,這可是巨大的影響
建議改掉用[]的習慣,用標準寫法比較好
 對速度的"嚴重”影響](http://attach.mobile01.com/attach/201711/mobile01-00724982bdfd04716b9a0ae9e7cebb78.jpg)