Cần giúp code chức năng tìm kiếm trong Userform (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

KHONG_GJ_CA

Thành viên mới
Tham gia
28/9/10
Bài viết
42
Được thích
0
Nhờ các Anh/ Chị trên GPE giúp em code chức năng tìm kiếm theo ngày trong File đính kèm
1. Khi em tìm kiếm thì trong list danh sách vẫn tìm bình thường, còn ngày 21/5/2015 và ngày 22/5/2015 thì khi tìm kiếm không hiện thị kết quả các Textbox tương ứng trên Userform.
2. Giúp em khi tìm kiếm được kết quả theo ngày thì sẽ hiện thị ngày đó trên Listbox của Userform. Đồng thời nếu không có ngày trong đó sẽ hiện Msg thông báo "CHƯA CÓ DỮ LIỆU TRONG NGÀY NÀY" và thông tin trong các Textbox tương ứng trên Userform sẽ trống.
3. Trên đầu Userform nhờ Anh/ Chị giúp em hiện nội dung: Đã nhập dữ liệu từ ngày (ngày đầu tiên) đến ngày (ngày cuối cùng trong danh sách).
Rất cảm ơn mọi người đã ghé qua!
 

File đính kèm

Nhờ các Anh/ Chị trên GPE giúp em code chức năng tìm kiếm theo ngày trong File đính kèm
1. Khi em tìm kiếm thì trong list danh sách vẫn tìm bình thường, còn ngày 21/5/2015 và ngày 22/5/2015 thì khi tìm kiếm không hiện thị kết quả các Textbox tương ứng trên Userform.
2. Giúp em khi tìm kiếm được kết quả theo ngày thì sẽ hiện thị ngày đó trên Listbox của Userform. Đồng thời nếu không có ngày trong đó sẽ hiện Msg thông báo "CHƯA CÓ DỮ LIỆU TRONG NGÀY NÀY" và thông tin trong các Textbox tương ứng trên Userform sẽ trống.
3. Trên đầu Userform nhờ Anh/ Chị giúp em hiện nội dung: Đã nhập dữ liệu từ ngày (ngày đầu tiên) đến ngày (ngày cuối cùng trong danh sách).
Rất cảm ơn mọi người đã ghé qua!

1/ Nội dung 1: Số TT từ 11 đến 12 định dạng là mm/dd/yyyy (khác với định dang nhập liệu là dd/mm/yyyy).
Trong code lại định dạng là dd/m/yyyy

tbxNgay = Format(tbxNgay, "dd/m/yyyy")

Nói chung muốn thực hiện tìm đúng thì dữ liệu phải đồng nhất thì tìm mới chính xác.

2/ Nội dung 2: Thử thêm đoạn code sau vào nút tìm.

If Me.tbxNgay.Value = "" Then
MsgBox "CHUA CÓ DU LIEU", vbExclamation, "NHAT KÝ CONG TRÌNH"
Me.tbxNgay.SetFocus
Exit Sub
End If

3/ Nội dung 3: Chờ thành viên khác trả lời.
 
Upvote 0
Câu 3 xài tạm.
Chẳng hiểu sao mình dùng tungay.Caption=Format(Application.Min(Sheet2.Range("B5", Sheet2.Range("B65536")).End(xlUp)), "dd/mm/yyyy") nó lại hiển thị sai.
 

File đính kèm

Upvote 0
Các bước hành lạc :
1/Copy vùng A4:R4
2/click vào ô V4 --> Paste
fake.jpg
3/Định dạng cột B là 1 loại bất kỳ nào đó có dấu hiệu của ngày tháng
4/Định dạng cột W là 1 loại bất kỳ nào đó có dấu hiệu của ngày tháng


5/tạo 1 module mới và đặt vào đó nội dung như file txt đính kèm dưới đây
6/Xóa sub tbxTimTheoNgay_Change()
7/tạo sự kiện keyup của tbxTimTheoNgay như sau

Mã:
Private Sub tbxTimTheoNgay_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
LookUpByDate WorksheetFunction.Trim(tbxTimTheoNgay.Text)
End Sub

8/Sửa lại sự kiện Click Button cmdSuaDuLieu thành
Mã:
Private Sub cmdSuaDuLieu_Click()
If Me.tbxSoTT.Value = "" Then
    CreateObject("WScript.Shell").Popup UniConvert("CHU7A CÓ SO61 THU71 TU75", "VNI"), , "THÔNG BÁO", vbOKOnly
    Me.tbxSoTT.SetFocus
    Exit Sub
End If
If Me.tbxNgay.Value = "" Then
    CreateObject("WScript.Shell").Popup UniConvert("CHU7A NHA65P NGÀY, THÁNG", "VNI"), , "THÔNG BÁO", vbOKOnly
    Me.tbxNgay.SetFocus
    Exit Sub
End If
    
 Dim iRow As Long, i As Long, MyCtrls()
 MyCtrls = Array(Val(tbxSoTT), tbxNgay.Text, tbxNoidungcv, tbxHangmuc, Cbx_TINH, Cbx_HUYEN, Cbx_XA, tbxTencongtac, tbxKhoiluong, tbxSoBB, tbxNgayNB, tbxBatdauNB, tbxKetthucNB, tbxNgayPYC, tbxNgayAB, tbxBatdauAB, tbxKetthucAB, tbxGhiChu)
              
 If Range("ListBoxNhatkythicong").Rows.Count = ListBox1.ListCount Then
     Range("ListBoxNhatkythicong").Offset(ListBox1.ListIndex).Resize(1).Value = MyCtrls
 Else
     Dim whatRow  As Long
     whatRow = Worksheets("NHAT KY CONG TRINH").Range("AN" & (ListBox1.ListIndex + 5)).Value
     Range("ListBoxNhatkythicong").Offset(whatRow).Resize(1).Value = MyCtrls
 End If
 
 CreateObject("WScript.Shell").Popup UniConvert("SU73A DU74 LIE65U XONG", "VNI"), , "THÔNG BÁO", vbOKOnly


 ListBox1.ListIndex = -1
End Sub
9/sửa lại sự kiện change của listbox1 thành
Mã:
Private Sub ListBox1_Change()
Dim i As Long
If ListBox1.ListIndex > -1 Then
    For i = 0 To 17
        MyControls(i).Text = ListBox1.List(, i)
        tbxNgay = Format(tbxNgay, "dd/m/yyyy")
    Next
Else
    For i = 0 To 17
        MyControls(i).Text = ""
    Next
End If
End Sub

10/Thêm vào sự kiện change của sheet NHAT KY CONG TRINH như sau
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)


If Target.Column < 21 Then
    dt_NhatKyCongTrinh = "nothing"
End If


End Sub

làm xong 10 điều mở Form lên vào ô tìm kiếm ngày gõ kí tự "15/5" nếu thấy có dấu hiệu thay đổi là đạt
tìm kiếm mà ko ra kết quả thì listbox1 sẽ tự động trống trơn , việc bắn ra 1 msgbox "CHƯA CÓ DỮ LIỆU TRONG NGÀY NÀY"
là cách tốt nhất để gây ức chế cho người dùng
nút Xóa có cần thiết khi trên bàn phím nào cũng có phím "delete" ?


ngoài lề : 2 câu lệnh range("A1").value = mytextbox và range("A1").value = mytextbox.text sẽ khác nhau
nên dùng cách 2
 

File đính kèm

Upvote 0
Bạn làm form có mấy vấn đề bất hợp lý:
1/Cái Listbox cần gì có đến 18 cột, như vậy sẽ rất khó khăn cho việc lọc vì không thêm bớt Item được. (Phương thức Add hay Remove chỉ áp dụng đến 9 cột mà thôi)
2/Nên để có thể lọc theo cột bất kỳ
3/Code lằng nhằng quá mà không tận dụng được cái mất công đã khai báo, nên viết lại.
 
Upvote 0
Thanks các Bác đã quan tâm, code em dùng của Bác Be09 Edit lại nên lộn xộn
 
Upvote 0
1/ Nội dung 1: Số TT từ 11 đến 12 định dạng là mm/dd/yyyy (khác với định dang nhập liệu là dd/mm/yyyy).
Trong code lại định dạng là dd/m/yyyy

tbxNgay = Format(tbxNgay, "dd/m/yyyy")

Nói chung muốn thực hiện tìm đúng thì dữ liệu phải đồng nhất thì tìm mới chính xác.

2/ Nội dung 2: Thử thêm đoạn code sau vào nút tìm.

If Me.tbxNgay.Value = "" Then
MsgBox "CHUA CÓ DU LIEU", vbExclamation, "NHAT KÝ CONG TRÌNH"
Me.tbxNgay.SetFocus
Exit Sub
End If

3/ Nội dung 3: Chờ thành viên khác trả lời.
Nhập xong 14 dòng dữ liệu bằng Form xong em click Enter Ngày ở TT 11 và 12 thì tự nó ko thể tìm đc. Còn ko click gì thì vẫn tìm bình thường, như vậy nếu có ai đó xem file của em và enter 1 số vị trí cột B em lại phải nhập lại
 
Upvote 0
Theo tôi nên chuyển form như sau để an toan dữ liệu và form hoạt động quy củ hơn
Bạn tham khảo file nha.

Mật khẩu cập nhật chứng từ : GPE
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

Bài viết mới nhất

Back
Top Bottom