Nhờ trợ giúp code tìm kiếm trong form (1 người xem)

Liên hệ QC

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

van_thanh_phong

Thành viên chính thức
Tham gia
25/6/08
Bài viết
87
Được thích
10
Nghề nghiệp
Giáo viên
Nhờ sự giúp đỡ nhiệt tình của bác Sealand mà tôi đã có một form nhập liệu hơn cả mong đợi.
Sau khi sử dụng lại nảy sinh vấn đề là
1. Tìm kiếm dữ liệu trong form thỏa mãn một số điều kiện
Có thể tìm theo tên học sinh,năm sinh,nữ,DT,MSHS(xem file đính kèm sẽ chi tiết hơn) hoặc nhiều điều kiện cùng một lúc
2. Sau khi tìm xong nếu click vào nút lệnh:"Trích xuất dữ liệu" sẽ tạo 1 sheet mới với nội dung là dữ liệu vừa tìm được
Rất mong được sự giúp đỡ của của các thành viên.
Chân thành cảm ơn !
 
Chỉnh sửa lần cuối bởi điều hành viên:
Trời, cái hàm tính tuổi của bạn nặng quá đi mất. Mình xoá nó đi và đưa nó vào 1 nút trên Form thì nó nhẹ tênh. Bạn kiểm tra xem. Mà đã code thi thậm chí bảng thống kê cũng code luôn. Như vậy khi dữ liệu lớn file mới chạy trơn tru được.
 

File đính kèm

Upvote 0
Ở bảng thống kê dùng cod thì tuyệt vời quá nhưng mình dùng công thức mảng mình dùng công thức mảng cũng tạm ổn vid nó độc lập không ảnh hưởng đến tốc độ xử lí của cod( và vì........ do trình độ của minh.....không thể làm được).
Rất cảm ơn sự nhiệt tình của Sealand.
Minh hi vọng rằng trong diễn đàn ai cũng như Sealand thì đây thực sự là ngôi trường chung cho tấc cả mọi người muốn đến với excel.
 
Upvote 0
Bạn quá khen , mình ngượng lắm. Vào diễn đàn trao đổi nó là 1 cách thư giãn của mình mà.
Nếu gặp trương hợp như thế này nên tạm thời chuyển Caculate sang Manual. Khi nào xem báo cáo thì chuyển lại sẽ cải thiện tốc độ làm việc
 
Lần chỉnh sửa cuối:
Upvote 0
Sealand kiểm tra lại dùm sheet THONG KE THEO TUOI sao vẫn không thống kê được.Khi thay đổi năm sinh thì kết quả thống kê vẫn không đổi.
Cảm ơn !
 
Upvote 0
Sealand kiểm tra lại dùm sheet THONG KE THEO TUOI sao vẫn không thống kê được.Khi thay đổi năm sinh thì kết quả thống kê vẫn không đổi.
Cảm ơn !
Bạn nhấn F9 xem thế nào.
Do calculation ở chế độ manual. Nghiên cứu Menu\Tools\Options\Calculation\Automatic.
Sao không viết code cho phần thống kê luôn.
 
Upvote 0
Mình đã hiệu chỉnh lại như ThuNghi hướng dẫn và kết quả........ như mong đợi !
Phần thống kê này khá phức tạp nên mình không thể viết nổi.Mình chỉ có thể dùng công thức mảng thôi.Rất mong các thành viên trong diễn đàn trợ giúp!
Chân thành cảm ơn !
 
Lần chỉnh sửa cuối:
Upvote 0
Phần thống kê nó chỉ có vậy hay còn nhiều hơn, nếu chỉ có vậy thì code chẳng ngại lắm.
 
Upvote 0
Mình đã hiệu chỉnh lại như ThuNghi hướng dẫn và kết quả........ như mong đợi !
Phần thống kê này khá phức tạp nên mình không thể viết nổi.Mình chỉ có thể dùng công thức mảng thôi.Rất mong các thành viên trong diễn đàn trợ giúp!
Chân thành cảm ơn !
Bạn dùng code này xem thế nào, chưa test hết và rút gọn.
PHP:
Sub ThKe()
Dim endR As Long, i As Long, iT As Long, s As Long, iC As Long, sotuoi As Long
Dim Arr(), ArrKQ(1 To 9, 1 To 20)
With Sheets("DSHS")
  endR = .Cells(65000, 1).End(xlUp).Row
  Arr = .Range("B5:O" & endR).Value
End With
For iT = 11 To 19
  s = iT - 10
  For i = 1 To UBound(Arr)
    Select Case UCase(Left(Arr(i, 12), 2))
      Case "K6"
        iC = 4
      Case "K7"
        iC = 8
      Case "K8"
        iC = 12
      Case "K9"
        iC = 16
    End Select
    sotuoi = Arr(i, 14)
    If sotuoi > 19 Then sotuoi = 19
    If sotuoi = iT Then
      ArrKQ(s, 1) = ArrKQ(s, 1) + 1
      ArrKQ(s, 1 + iC) = ArrKQ(s, 1 + iC) + 1
      If Len(Arr(i, 2)) > 0 Then 'Nu'
        ArrKQ(s, 2) = ArrKQ(s, 2) + 1
        ArrKQ(s, 2 + iC) = ArrKQ(s, 2 + iC) + 1
      End If
      If Len(Arr(i, 3)) > 0 Then 'DanToc'
        ArrKQ(s, 3) = ArrKQ(s, 3) + 1
        ArrKQ(s, 3 + iC) = ArrKQ(s, 3 + iC) + 1
      End If
      If Len(Arr(i, 2)) > 0 Then 'Nu'
        If Len(Arr(i, 3)) > 0 Then 'DanToc'
          ArrKQ(s, 4) = ArrKQ(s, 4) + 1
          ArrKQ(s, 4 + iC) = ArrKQ(s, 4 + iC) + 1
        End If
      End If
    End If
  Next i
Next iT
With Sheet1.Range("C6")
  .Resize(9, 20) = ArrKQ
End With
Erase Arr, ArrKQ

End Sub
 
Upvote 0
Mình đã tich hợp cod vào form.Kết quả thật không khác gì làm công thức.Nhưng rất chuyên nghiệp và tốc độ xử lí của cod cũng rất nhanh.
Quả là cao thủ có khác!
Mình rất nể trình độ cod và lòng nhiệt của Sealand và ThuNghi.
Rất cảm ơn vì tấc cả !
 
Upvote 0
Nhờ các thành viên trong GPE chỉ giúp đoạn cod để LoadRecord vào form nhé !
Giả sử mình đã có 1 chuong tình con LoadRecord
Nếu dòng nào là dòng hiện hành thì Load dòng đó vào form và nếu nội dung trong form ở dòng nào thì tô màu dòng hiện hành
Ví dụ:dòng 5 là dòng hiện hành thì load nội dung dòng 5 vào form và dòng 5 được tô màu
Chi tiết xem file nhé !
Rất mong được các thành viên trong diễn đàn trợ giúp !
Chân thành cảm ơn !
 
Upvote 0
Hình như bạn chưa hiểu hết Code trong bài rồi chính đoạn Code sau là Code load data. Bạn cần thay đổi dòng thì chỉ việc can thiệp vào ô Dg trên Fỏm hay biến i:

Mã:
Sub loaddata()
Dim i
i = Val(Me.dg)
With HS
Me.TextName = .Cells(i, 2)
Me.CheckBoxNU = IIf(UCase(.Cells(i, 3)) = "X", True, False)
Me.CheckBoxDT = IIf(UCase(.Cells(i, 4)) = "X", True, False)
Me.TextNamsinh = .Cells(i, 5)
Me.TextNoisinh = .Cells(i, 6)
Me.TextDC = .Cells(i, 7)
Me.TextTENCHA = .Cells(i, 8)
Me.TextNGHECHA = .Cells(i, 9)
Me.TextTENME = .Cells(i, 10)
Me.TextNGHEME = .Cells(i, 11)
Me.TextSDT = .Cells(i, 12)
Me.TextMSHS = .Cells(i, 13)
Me.TextBoxghichu = .Cells(i, 14)
End With
End Sub

Bạn lưu ý có 1 số vấn đề cần thận trong là bảng tính khác Record. Record chỉ di chuyển được từ bản ghi 1 đến bản ghi cuối còn bảng tính lại di chuyển được lên trên dòng tiêu đề hay sau dòng data cuối. Vậy khi dòng hiện hành là tiêu đề hay vùng trống cần khoá.
Form của bạn là loại có thể chuyển đổi từ View sang Edit thì khi view đã làm việc load dữ liệu lên Form rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Ý mÌnh là khi con trỏ đang ở dòng nào trong bảng tính excel thì nội dung các cột ở dòng đó hiển thị lên form !
Chân thành cảm ơn SeaLand !
Sea land kiểm tra lại dùm mình lỗi sau nha:
Khi chọn deleteRecord=>cancel.Rồi chọn lại NewRecord thì không tạo một Record mới mà lại load Record cuối cùng lên cho cúng ta thực hiện nút lệnh Edit.Vậy phải sửa lại cod như thế nào ?
Rất mong được sự trợ giúp của Các thành viên trong diễn đàn !
 
Lần chỉnh sửa cuối:
Upvote 0
1/Vậy thì chỉ cần sửa Code của nút "NHAP THONG TIN HOC SINH" như sau là được

Mã:
Private Sub CommandButton1_Click()
Call UserForm1.Show(vbmodless)
If Selection.Row < 5 Then
UserForm1.dg = 5
ElseIf Selection.Row > HS.[b65536].End(xlUp).Row Then
UserForm1.dg = HS.[b65536].End(xlUp).Row
Else
UserForm1.dg = Selection.Row
End If
End Sub

2/ Code nút Delete sửa như sau

Mã:
Private Sub CommandButton5_Click()
Dim Kt
Kt = MsgBox("Ban co thuc su muon xoa ho so nguoi nay ?", vbOKCancel, "QUAN LY HOC SINH")
If Kt = 1 Then
HS.Rows(Me.dg).EntireRow.Delete
If Me.Navi1.Max > 1 Then Me.Navi1.Max = Me.Navi1.Max - 1
loaddata
setsott
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nút lệnh delete thì được rồi nhưng mà khi con trỏ đang ở dòng nào trong bảng tính excel thì nội dung dòng đó hiển thị lên form thì vẫn chưa được.Mình gởi file nhờ Sealand kiểm tra dùm nha
 
Upvote 0
Trong vùng Code của Sheet HS bạn nhập doạn Code này vào (Mình thực sự chưa hiểu chính xác câu hỏi của bạn):

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Row >= 5 And Target.Row <= HS.[b65536].End(xlUp).Row Then
 UserForm1.dg = Target.Row
 End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
sao bạn không làm 1 cái list view mà lại làm thanh scroll vậy, thiết kế form như kiểu này thì mình mới được chiêm ngưỡng lần đầu. Trong diễn đàn cũng có các bài của anh yeudoi và vungoc đã làm các phần mềm quản lý nhân viên, hsinh, svien bằng listview. Chỉ khi click vào tên của người nào thì toàn bộ thông tin sẽ show hết trong các ô trên form. Như vậy nhìn đẹp và pro hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Đoạn cod này thì kết quả như mong đợi rồi.Ý mình là như vậy!
Cảm ơn Sealand rất nhiều
 
Upvote 0
Mình vào Proprerties nhưng mà không thấy customize đâu cả,vầy phải làm sao thấy được customize để tham khảo ?
Cảm ơn !
 
Upvote 0
Bạn không nói rõ Properties của cái gì thì sao mà trả lời
 
Upvote 0
Cảm ơn Sealand mình đã làm được rồi !
Mình vừa mua được quyển lập trình VBA trong excel của tác giả Phan Tự Hướng.trong quá trình học có gì không hiểu xin nhờ Sealand chỉ giúp nhé !
 
Upvote 0
Web KT

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

Back
Top Bottom