emgaingayngo
Thành viên hoạt động
- Tham gia
- 9/2/07
- Bài viết
- 141
- Được thích
- 5
Minh thấy trên diễn đàn có nhiều bài viết về cách biên dịch một hàm tự tạo (UDF) thành mã máy để tốc độ tính tóan nhanh hơn, nhưng các bài viết còn ở mức độ cao.
Vậy mình mở topic này mong các cao thủ hướng dẫn cụ thể từ cơ bản đến nâng cao để các bạn ở trình độ thấp hơn dễ học.
Ví dụ mình có một hàm như sau : Dùng để tìm khỏang cách lớn nhất của 01 số trong một miền.
Xin các cao thủ đừng bàn về giải thuật, mà hướng dẫn cụ thể cách biên dịch thành mã máy hay dll... gì đó.
Thánks Much!
Vậy mình mở topic này mong các cao thủ hướng dẫn cụ thể từ cơ bản đến nâng cao để các bạn ở trình độ thấp hơn dễ học.
Ví dụ mình có một hàm như sau : Dùng để tìm khỏang cách lớn nhất của 01 số trong một miền.
PHP:
Public Function MAXCOT(ByVal rngRange As Range, sngNumber As Single) As Long
Dim lRows As Long, iCols As Integer, iAreasCount As Integer, blnColContentValue As Boolean
Dim vCellValue
Dim iDisMax As Integer, iDisMaxCount As Integer
'Khoang cach cot lon nhat dua vao so dua vao'
Dim i As Integer, j As Long, blnStarCount As Boolean
'Kiem tra xem rngRange nay co bao nhieu Areas?'
iAreasCount = rngRange.Areas.Count
If iAreasCount <> 1 Then
MAXCOT = -1
Exit Function
Else
lRows = rngRange.Rows.Count
iCols = rngRange.Columns.Count
iDisMaxCount = 0: iDisMax = 0: blnStarCount = False
With rngRange
For j = 1 To iCols
blnColContentValue = False 'Gia su rang cot nay khong chua gia tri'
For i = 1 To lRows
vCellValue = CSng(.Cells(i, j))
If vCellValue = sngNumber Then
blnColContentValue = True
Exit For
End If
Next i
If blnColContentValue Then
'Neu cot co gia tri thi bat dau dem'
blnStarCount = True
If iDisMaxCount > iDisMax Then
iDisMax = iDisMaxCount
'iDisMaxCount = 0'
End If
iDisMaxCount = 0
Else
'Neu chua tim thay trong cot nay'
'Dong thoi cung chua tim thay cot chua gia tri de bat dau dem'
If blnStarCount Then
iDisMaxCount = iDisMaxCount + 1
End If
End If
Next j
End With
MAXCOT = iDisMax + 1
End If
End Function
Thánks Much!