Hoàng Thanh Linh
Thành viên mới
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 30/10/17
- Bài viết
- 22
- Được thích
- 2
- Giới tính
- Nam
Private Sub TextBox1_Change()
Dim lastRow As Long, r As Long, c As Long, count As Long, findvalue As String, data(), result(), index() As Long
ListBox1.Clear
With Sheet1
lastRow = .Cells(Rows.count, "B").End(xlUp).Row
If lastRow < 3 Then Exit Sub
data = .Range("A3:M" & lastRow).Value
End With
findvalue = TextBox1.Text & "*"
For r = 1 To UBound(data)
If data(r, 2) Like findvalue Then
count = count + 1
ReDim Preserve index(1 To count)
index(count) = r
End If
Next r
If count Then
ReDim result(1 To count, 1 To 13)
For r = 1 To count
For c = 1 To 13
result(r, c) = data(index(r), c)
Next c
Next r
ListBox1.List = result
End If
End Sub
Ban đầu thì mình làm 13 cột nhưng có 1 cột không cần nhập liệu nên mình bỏ đi 01 cột.1. Bạn tìm theo số thẻ (Nhập thẻ hộ nghèo cần tìm kiếm), tôi hiểu là Mã số thẻ, vậy tại sao lại xét tất cả các cột?
2. Mỗi lần tìm kiếm phải bỏ ra uống cà phê. Không được đọc từng ô dữ liệu từ sheet khi dữ liệu nhiều. Phải đọc toàn bộ dữ liệu vào mảng rồi tìm kiếm trong mảng.
3. Nếu bạn dùng ListBox1.AddItem + ... thì chỉ có 10 cột (0-9), hãy đọc help.
Muốn dùng > 10 cột thì hãy nhét dữ liệu vào mảng rồi sau đổ vào LIstBox: ListBox1.List = mảng.
4. Bạn muốn dùng 13 cột nhưng lại có ColumnCount = 12, tức cột 13 sẽ không nhìn thấy. Dụng ý là thế?
5. ListBox hẹp quá không nhìn thấy cột M. Trừ phi dụng ý không hiện M.
Tôi sửa code thành
Mã:Private Sub TextBox1_Change() Dim lastRow As Long, r As Long, c As Long, count As Long, findvalue As String, data(), result(), index() As Long ListBox1.Clear With Sheet1 lastRow = .Cells(Rows.count, "B").End(xlUp).Row If lastRow < 3 Then Exit Sub data = .Range("A3:M" & lastRow).Value End With findvalue = TextBox1.Text & "*" For r = 1 To UBound(data) If data(r, 2) Like findvalue Then count = count + 1 ReDim Preserve index(1 To count) index(count) = r End If Next r If count Then ReDim result(1 To count, 1 To 13) For r = 1 To count For c = 1 To 13 result(r, c) = data(index(r), c) Next c Next r ListBox1.List = result End If End Sub
Nếu tìm bất kỳ cột thì hãy nghĩ đến Advanced Filter.Ban đầu thì mình làm 13 cột nhưng có 1 cột không cần nhập liệu nên mình bỏ đi 01 cột.
Còn tìm kiếm thì mình muốn tìm kiếm mở rộng tất cả các cột để dễ khai thác và tra cứu thông tin, nhưng chủ đích thì tìm trên cột mã số thẻ là chủ yếu.
Cám ơn bạn đã góp ý cho mình
Mình muốn tìm kiếm ngay trên Form chứ không dùng trên vùng dữ liệu, bạn có thể dùng Advanced Filter để lọc dữ liệu trên Form không ?Nếu tìm bất kỳ cột thì hãy nghĩ đến Advanced Filter.
Đọc kỹ sẽ thấy là người ta không tìm trong cột cố định nào cả.Nếu tìm bất kỳ cột thì hãy nghĩ đến Advanced Filter.
Giúp mình code sửa chữa, xóa dữ liệu sau khi tìm kiếm theo số thẻ hộ nghèo được không ?Đọc kỹ sẽ thấy là người ta không tìm trong cột cố định nào cả.
Người ta cần vd. gõ "hichic". Bây giờ code xét từng dòng trong vùng A:L. Trong mỗi dòng trước tiên tìm "hichic" ở cột A. Nếu tìm thấy thì cho dữ liệu dòng hiện hành vào kết quả. Nếu không tìm thấy thì tìm trong cột B, C, ..., L. Trong trường hợp xấu nhất thì phải tìm đến tận cột L. Cứ thế cho từng dòng.
Bạn hãy giải thích, mô tả, hướng dẫn từng thao tác, đừng bắt người khác phải đoán ý mình.Giúp mình code sửa chữa, xóa dữ liệu sau khi tìm kiếm theo số thẻ hộ nghèo được không ?
File dữ liệu đã có code Form nhập liệu và tìm kiếm trên TextBox theo mã hộ nghèo, hộ cận nghèoBạn hãy giải thích, mô tả, hướng dẫn từng thao tác, đừng bắt người khác phải đoán ý mình.
Đại loại như: khi Form được hiển thị thì ... được nhập vào ... Khi tôi gõ abc vào ... thì sẽ lọc ... và kết quả lọc sẽ hiển thị ở ... Sau đó tôi muốn ... thì phải làm thế nào? Khi tôi muốn xóa ... ở ...
Cứ như thế, hướng dẫn từng thao tác.
Xóa dữ liệu? Ở đâu? Trên sheet, ListBox, TextBox?
Việc sắp xếp dữ liệu của bạn rất bất ổn mình thì không có time giúp bạn sắp xếp lại chỉ làm theo yêu cầu của ban.File dữ liệu đã có code Form nhập liệu và tìm kiếm trên TextBox theo mã hộ nghèo, hộ cận nghèo
Kết quả tìm kiếm hiện thị trên Listbox và truyền dữ liệu trên các TextBox và Combobox
Bây giờ mình muốn chỉnh sửa dữ liệu hoặc xóa dữ liệu sau khi tìm kiếm (trên các TextBox và Combobox hiện kết quả)
Mình làm File này để giúp bạn cùng cơ quan, dữ liệu lưu ở cột H, I và Năm sinh Nam nữ tách biệt thành 2 cột khác nhau chỉ phục vụ in ấn thẻ hộ nghèo, hộ cận nghèo.Việc sắp xếp dữ liệu của bạn rất bất ổn mình thì không có time giúp bạn sắp xếp lại chỉ làm theo yêu cầu của ban.
Chào bạn đáng ra mình cũng định stop rồi vì bận quá nhưng xem kĩ lại file bạn là dành cho hộ nghèo nên mình cũng cố gắng hết sứcMình làm File này để giúp bạn cùng cơ quan, dữ liệu lưu ở cột H, I và Năm sinh Nam nữ tách biệt thành 2 cột khác nhau chỉ phục vụ in ấn thẻ hộ nghèo, hộ cận nghèo.
Sheet 4 mình sẽ liên kết Hyperlink để đến các Sheet và chạy code VBA (nhập liệu, chỉnh sửa)
Mình đã thử File của bạn làm, Code chỉnh sửa bị sai vì sau khi cập nhật nó lưu dữ liệu bị lệch 01 cột trong khi dữ liệu ở cột cuối cùng vẫn giữ nguyên (cột đoàn thể)