Bạn hỏi về hàm tìm kiếm UDF mà chỉ đúng có 1 dòng tên hàm thì ai mà biết cái hàm ấy ra làm sao mà có ý kiến. Một vấn đề nữa liên quan tới giải thuật:
-Tìm tất cả các dòng có ký tự như mẫu.
-Tìm tất cả (Hay dòng đầu tiên) có bắt đàu = mẫu...
Nói tóm lại là phải có yêu cầu cụ thể.
anh ơi, cái hàm này em tham khảo bài của Anh Lê Văn Duyệt trên diễn đàn File (StockCountHelper). Chi tiết của nó như sau:
Option Explicit
Option Base 1
Public Enum elvSearch
elvSearchText = 1
elvSearchSub = 2
elvSearchTag = 4
End Enum
Private Type LV_ITEM
Mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
iIndent As Long
End Type
' Color Constants
Public Const vbViolet = &HFF8080
Public Const vbVioletBright = &HFFC0C0
Public Const vbForestGreen = &H228B22
Public Const vbGray = &HE0E0E0
Public Const vbLightBlue = &HFFD3A4
Public Const vbLightGreen = &HABFCBD
Public Const vbGreenLemon = &HB3FFBE
Public Const vbYellowBright = &HC0FFFF
Public Const vbOrange = &H2CCDFC
' ListView API
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' ListView messages
Private Const LVM_FIRST = &H1000, LVM_GETNEXTITEM = (LVM_FIRST + 12)
Private Const LVNI_SELECTED = &H2, LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50)
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54, LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
Private Const LVS_EX_FULLROWSELECT = &H20
Private Const LVIF_TEXT = &H1
Private Const LVM_SETITEMSTATE As Long = (LVM_FIRST + 43)
Private Const LVM_GETITEMSTATE As Long = (LVM_FIRST + 44)
Private Const LVM_GETITEMTEXT As Long = (LVM_FIRST + 45)
'Purpose : Finds and selects and item in a listview
'Inputs : sFileName The path and file name of the component to register.
' lvFind The listview to search for the item in.
' [eValueType] The type of values to search:
' 1 = Searches the text items.
' 2 = Searches sub items.
' 4 = Searches the item tags.
' [lSearchFor] The type of matching required:
' lvwWhole = Find whole word.
' lvwPartial = Find a partial match.
' [lIndexBeginFrom] The item index to begin the search from.
'Outputs : N/A
'Author : Andrew Baker
'Date : 25/11/2000 03:17
'Notes :
'Revisions :
Public Function ListViewFindItem(sFindItem As String, lvFind As Listview, _
Optional eValueType As elvSearch = elvSearchText + elvSearchSub + elvSearchTag, _
Optional lSearchFor As Long = lvwPartial, _
Optional lIndexBeginFrom As Long = 1) As ListItem
On Error Resume Next
'Try to find item
If eValueType And elvSearchText Then
'Search text
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchSub And (ListViewFindItem Is Nothing) Then
'Search subitems
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchTag And (ListViewFindItem Is Nothing) Then
'Search tags
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If (ListViewFindItem Is Nothing) = False Then
'Found a matching item, display it.
Set lvFind.SelectedItem = ListViewFindItem
lvFind.SelectedItem.EnsureVisible
End If
On Error GoTo 0
End Function
Em chỉ muốn tìm trong cột thứ 2 trở đi, tìm (Hay dòng đầu tiên) có bắt đàu = mẫu, nếu được thì tìm luôn tất cả các dòng có ký tự như mẫu. File em chẳng upload được