Function doi_font(text As String) As String
Dim i, kytu, vitri, newtext
For i = 1 To Len(text)
kytu = Mid(text, i, 1)
vitri = InStr(1, StrVn3, kytu, 0)
If vitri > 0 Then
newtext = newtext & ChrW(Mid(CodUni, vitri * 5 - 4, 5))
Else
newtext = newtext & kytu
End If
Next
doi_font = newtext
End Function
Mình đã coi lại bài của bạn nhưng chưa được kỹ nên chưa có ý kiến cụ thể được. nhưng để hiển thị dữ liệu lọc thì ta phải thay đổi biện pháp nạp dữ liệu.Mình sẽ gửi đường dẫn tham khảo cách lọc và nạp ở đâyChào anh SEALAND
Sẵn anh đang online, em hỏi anh luôn File bữa trước em gửi Bằng EX07.
- Muốn ListWiew lọc từ cột thứ 2, 3 thì làm thế nào. Em dung finditem không được.
- Dùng ListView để hiện dữ liệu đã nhập vào sheets (VD: theo số 005, 006, 007..) giờ em dùng SPinBotton quay lại số 005 chỉnh sửa rồi gán lại vào sheets đúng vị trí số đó Có chèn thêm dữ liệu. Thì dùng Mảng hay dùng cách thủ công nhanh hơn. Cách thủ công em làm gần được thấy thủ công quá (lặp liên tục) nên dừng lại tìm cách tối ưu. File em gửi mail qua ĐC cũ của anh rồi, E không up được lên diễn đàn.
- Anh xem dùm em mấy sự kiện đã hợp lý chưa mà sao thấy code dài quá
Cám ơn anh
Cho em hỏi thêm 1 vấn đề này nữa làm cách nào mình xác định được ô trên LV ứng với ô trong mảng của mình (dùng để sửa dữ liệu từ LV)
Chào anhThông thường, một cơ sở dữ liệu chuẩn sẽ có các Primery key, index, v.v... Nếu Bảng dữ liệu (trong excel là sheet) của bạn quy định cột nào là key field thì ta có thể căn cứ vào giá trị tại cột đó để tìm kiếm (Có thể dùng phương thức Find hoặc For...Next để tìm) và xác định địa chỉ (dòng) của dữ liệu đó.
Chào anh
Anh có thể đưa VD về tìm kiếm trong LISTVIEW dùng phương thức find hay for....next được không. Em nhớ là hình như chỉ tìm được ở cột đầu tiên thì phải. Muốn tìm ở cột khác thì phải dùng LISTVIEW tạm. KHông biết đã là tối ưu nhất chưa.
Code trên của bạn có thể rút gọn lại rất nhiều và chạy nhanh hơn nếu dùng mảng (bằng cách đặt Name). Bạn gửi file lên để mọi người hỗ trợ cụ thể nhé!*******************************
[highlight=vb]Sub napdl()
'Tam khai bien tra phuc vu loc sau nay
Dim ktra As Boolean
Dim muc As ListItem
ktra = True
If Me.ListView1.ListItems.Count > 0 Then Me.ListView1.ListItems.Clear
For i = 2 To Application.WorksheetFunction.CountA(Sheet1.[a2:a2000]) + 1
If ktra Then
Set muc = Me.ListView1.ListItems.Add(, , Sheet1.Cells(i, 1))
With muc
.SubItems(1) = Sheet1.Cells(i, 2)
.SubItems(2) = Sheet1.Cells(i, 3)
.SubItems(3) = Sheet1.Cells(i, 4)
.SubItems(4) = Sheet1.Cells(i, 5)
End With
End If
Next
End Sub
[/highlight]
***********************************
các anh cho em hỏi cái này mình áp dụng để gáng cho mãng được không (Em muốn mở form "tênform.show" lên là LV tự chạy)
**********************
Private Sub LVDataSelector_ItemClick(ByVal Item As MSComctlLib.ListItem)
Call tim
End Sub
****************************************
Sub tim()
Dim ma, dong
ma = LVDataSelector.SelectedItem.text
if trim(ma)<>"" then
[COLOR=Red]dong = Application.WorksheetFunction.Match(ma, S01.[a2:a10000], 0)[/COLOR]
Me.TextBox6 = dong
Me.TextBox7 = S01.Cells(dong + 1, 1).Address
else
Me.TextBox6 = ""
Me.TextBox7 =""
end if
End Sub
*****************************************
Cái sub xoa của bạn không được rồi:
-Trước hết phải rõ ý đồ xóa dòng nào, dòng hiện thời hay dòng đánh dấu.
-Xóa như thế nào: Xóa trên list hay cả trên sheet.
Sau đó mới viết lệnh xóa tương ứng.
Xóa dữ liệu trên sheet tại dòng có mã =maxoa như thế nào chắc bạn làm được: