- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,725
- Giới tính
- Nam
Tôi thấy các cao thủ thường viết hàm mà trong đó có biến Variant (có thể là biến dành cho một mảng) và tôi cũng thường làm như thế (tôi chưa phải là nhà logic toán học như Thầy siwtom nên thấy các cao thủ làm sao thì mình làm vậy).
Chẳng hạn hàm này:
Vậy xin vui lòng cho hỏi, ta không thay thế được không, ta làm trực tiếp bằng biến đó được không? Nếu không làm thế thì tiềm ẩn những lỗi gì?
Tôi hỏi như vậy vì có lý do khách quan cho việc thử nghiệm 2 thủ tục dưới đây (test với Excel 2007 trở lên):
Thời gian "nhận" giá trị của biến, và thời gian biến khác "nhận" lại giá trị của biến này quả thật đã chiếm thời gian rất nhiều.
Xin được giải thích và chỉ rõ những vấn đề trên giúp tôi nhé!
Cảm ơn rất nhiều.
Chẳng hạn hàm này:
Mã:
Function Unique2D(ByVal [COLOR=#ff0000][B]Expression [/B][/COLOR]As Variant) As Variant
Dim SourceArray As Variant
[COLOR=#ff0000]SourceArray = Expression[/COLOR]
'......
'......
'......
End Function
Vậy xin vui lòng cho hỏi, ta không thay thế được không, ta làm trực tiếp bằng biến đó được không? Nếu không làm thế thì tiềm ẩn những lỗi gì?
Tôi hỏi như vậy vì có lý do khách quan cho việc thử nghiệm 2 thủ tục dưới đây (test với Excel 2007 trở lên):
Mã:
Sub Macro1()
Dim FirstArray, LastArray, T As Double
T = Timer
[COLOR=#ff0000]FirstArray = Sheet1.Range("A1:H500000").Value[/COLOR]
MsgBox Timer - T
'Erase FirstArray
End Sub
'---------------------------------------------------
Sub Macro2()
Dim FirstArray, LastArray, T As Double
T = Timer
[COLOR=#ff0000] FirstArray = Sheet1.Range("A1:H500000").Value
[/COLOR][COLOR=#0000ff] LastArray = FirstArray[/COLOR]
MsgBox Timer - T
'Erase FirstArray, LastArray
End Sub
Thời gian "nhận" giá trị của biến, và thời gian biến khác "nhận" lại giá trị của biến này quả thật đã chiếm thời gian rất nhiều.
Xin được giải thích và chỉ rõ những vấn đề trên giúp tôi nhé!
Cảm ơn rất nhiều.
File đính kèm
Lần chỉnh sửa cuối: