Giúp em viết code tìm kiếm và sửa dữ liệu cho Form

Liên hệ QC

tranvyvn

Thành viên mới
Tham gia
16/10/09
Bài viết
24
Được thích
1
em có vấn đề này mà kiếm mãi trên forum không thấy, mong các cao thủ giúp em, có file đính kèm. em còn mới nhập môn thôi mong các anh giúp đỡ nhiệt tình. Thanks!
 

File đính kèm

  • Tim va Sua DL tren Form.xls
    43 KB · Đọc: 104
Bài viết của bạn hay quá!
Mình cũng đang đau đầu, chưa biết phải làm sao để viết đuợc code cho: tìm kiếm để chỉnh sửa và lưu lại. File mình đơn giản thôi.
Mong bạn giúp mình chia sẻ code để hoàn thiện file quản lý này.
Cám ơn bạn rất nhiều!!!
Bạn thử kiểu này xem . Mình mới làm phần sản xuất phần tiếp bạn vọc nhé (Tôi có sắp xếp lại Form và phần lưu trữ dữ liệu cho dễ goi)
Gọi dữ liệu trở về Form để sửa : Khi dữ liệu nhiều thì nhập vào cell5 của Form số theo số thứ tự gần với số định tìm dùng nút tiến và Lùi để gọi về sau đó sửa dữ liệu xong Click vào nút sửa
- Góp ý thêm với bạn : Khi đặt tên các Sheet thì nên đặt gho gọn lại và đừng bỏ dấu
Chúc thành công
 

File đính kèm

  • XUAT NHAP TON NVL-Mr. VO.xlsm
    72.6 KB · Đọc: 22
Upvote 0
Trong Form của bài #18 mình có bổ sung thêm textbox Ngày vào lớp ( với định dạng ngày tháng ). Mình nhập mới hoặc sửa bổ sung nếu không nhập ngày tháng vào textbox này thì bị báo lỗi khi cập nhật dữ liệu. Vậy có thể chỉnh trong code thế nào để không báo lỗi ( nếu không nhập ngày tháng vào textbob này ).
NHờ các anh chị chỉ giúp.
Xin cảm ơn.
 

File đính kèm

  • Nhập HSinh.xls
    101 KB · Đọc: 17
Upvote 0
Trong Form của bài #18 mình có bổ sung thêm textbox Ngày vào lớp ( với định dạng ngày tháng ). Mình nhập mới hoặc sửa bổ sung nếu không nhập ngày tháng vào textbox này thì bị báo lỗi khi cập nhật dữ liệu. Vậy có thể chỉnh trong code thế nào để không báo lỗi ( nếu không nhập ngày tháng vào textbob này ).
NHờ các anh chị chỉ giúp.
Xin cảm ơn.
Bạn thêm if vào thôi. Ví dụ:

if tbNgVao.Text <>"" then .Cells(lRs, "G").Value = CDate(Me!tbNgVao.Text)
 
Upvote 0
Bạn nên dựa vô hàm người dùng này mà nhập [Ngày Vô Lớp] cho thích hợp:
PHP:
Function TxtToDate(StrC As String) As Date
 Dim VTr As Integer, Nm As Integer, Th As Byte, Ng As Byte
 Const FC As String = "/"
 
 If Len(StrC) < 7 Or Len(StrC) > 10 Then
    MsgBox "Nhâp Ngày Không Chính Xác!", , "GPE.COM Xin Chào!"
 Else
1    Nm = CInt(Right(StrC, 4)):                          VTr = InStr(StrC, FC)
    If VTr Then
2        Ng = CByte(Left(StrC, VTr - 1)):                StrC = Mid(StrC, VTr + 1, 3)
3         VTr = InStr(StrC, FC):                          Th = CByte(Left(StrC, VTr - 1))
        TxtToDate = DateSerial(Nm, Th, Ng)
    End If
 End If
End Function
Hàm này đang được dùng để nhập ngày sinh tháng đẻ của HS (học sinh)
Hàm này sẽ chuyển chuỗi nhập vô TextBox tbNS (được khuyến cáo fải nhập chuỗi "DD/MM/yyyy") sang số liệu ngày tại cột [F:F] của CSDL của bạn.
Trên trang CSDL cột [F:F] này đang thể hiện (định dạng) là DD/MM/yyyy
[Nói thêm: Bạn có thể định dạng cột [F:F] này khác đi cũng không ảnh hưởng đến hòa bình thế giới.
Có nghĩa là lúc nào đó bạn muốn cột này thể hiện chỉ là MM/DD không thôi, chúng nó sẽ chìu bạn ngay tấp lự!]
Nói thể để thấy rằng hàm tự tạo trên sẽ chuyễn chuỗi nhập theo qui ước 'DD/MM/yyyy' sang số liệu ngày-tháng-năm
Nên để thống nhất trong nhập liệu vô 2 cột [F:G], ta nên nhập vô TextBox mới thêm của bạn là 'DD/MM/yyyy' hay để trống
Trong macro 'Lưu Nhập Mới' ta cần thêm 3 dòng lệnh sau:
PHP:
 Cells(lRs, "E").Value = Me!tbTHS.Text:                 Cells(lRs, "F").Value = TxtToDate(Me!tbNS.Text)
 If Me!tbNgVao.Text <> "" Then                          'Thêm Mói   '
    Cells(lRs, "G").Value = TxtToDate(Me!tbNgVao.Text): Me!tbNgVao.Text = ""
 End If                                                 'Thêm Mói   '
 Me!tbTHS.Text = "":                                    tbNS.Text = Space(0)

Tương tự như vậy, bạn thử với nút lệnh còn lại trước xem sao & chúc thành công!
Giải thích thêm về 3 dòng lệnh mới này:
D1: Nếu trong TextBox có tên tbNgVao khác rỗng thì thực hiện dòng lệnh kế tiếp
D2:
Mệnh đề trước: Ô thuộc dòng có trị chứa trong tham biến lRs thuộc cột "G" được nhập trị (ngày-tháng-năm) từ hàm TxtToDate với đối số được cung cấp từ TextBox có tên 'tbNgVao'
Mệnh đề sau: Ấn định TextBox 'tbNgVao' chứa chuỗi rỗng
D3: (Miễn bàn)

Còn chuyện bạn muốn trên cột [G] của CSDL của bạn thể hiện chỉ là 'DD/MM' hay chỉ là 'MM/DD' là chuyện của bạn hoàn toàn tự quyết.

Chúc vui!
 
Upvote 0
Bạn nên dựa vô hàm người dùng này mà nhập [Ngày Vô Lớp] cho thích hợp:
PHP:
Function TxtToDate(StrC As String) As Date
Dim VTr As Integer, Nm As Integer, Th As Byte, Ng As Byte
Const FC As String = "/"

If Len(StrC) < 7 Or Len(StrC) > 10 Then
    MsgBox "Nhâp Ngày Không Chính Xác!", , "GPE.COM Xin Chào!"
Else
1    Nm = CInt(Right(StrC, 4)):                          VTr = InStr(StrC, FC)
    If VTr Then
2        Ng = CByte(Left(StrC, VTr - 1)):                StrC = Mid(StrC, VTr + 1, 3)
3         VTr = InStr(StrC, FC):                          Th = CByte(Left(StrC, VTr - 1))
        TxtToDate = DateSerial(Nm, Th, Ng)
    End If
End If
End Function
Hàm này đang được dùng để nhập ngày sinh tháng đẻ của HS (học sinh)
Hàm này sẽ chuyển chuỗi nhập vô TextBox tbNS (được khuyến cáo fải nhập chuỗi "DD/MM/yyyy") sang số liệu ngày tại cột [F:F] của CSDL của bạn.
Trên trang CSDL cột [F:F] này đang thể hiện (định dạng) là DD/MM/yyyy
[Nói thêm: Bạn có thể định dạng cột [F:F] này khác đi cũng không ảnh hưởng đến hòa bình thế giới.
Có nghĩa là lúc nào đó bạn muốn cột này thể hiện chỉ là MM/DD không thôi, chúng nó sẽ chìu bạn ngay tấp lự!]
Nói thể để thấy rằng hàm tự tạo trên sẽ chuyễn chuỗi nhập theo qui ước 'DD/MM/yyyy' sang số liệu ngày-tháng-năm
Nên để thống nhất trong nhập liệu vô 2 cột [F:G], ta nên nhập vô TextBox mới thêm của bạn là 'DD/MM/yyyy' hay để trống
Trong macro 'Lưu Nhập Mới' ta cần thêm 3 dòng lệnh sau:
PHP:
Cells(lRs, "E").Value = Me!tbTHS.Text:                 Cells(lRs, "F").Value = TxtToDate(Me!tbNS.Text)
If Me!tbNgVao.Text <> "" Then                          'Thêm Mói   '
    Cells(lRs, "G").Value = TxtToDate(Me!tbNgVao.Text): Me!tbNgVao.Text = ""
End If                                                 'Thêm Mói   '
Me!tbTHS.Text = "":                                    tbNS.Text = Space(0)

Tương tự như vậy, bạn thử với nút lệnh còn lại trước xem sao & chúc thành công!
Giải thích thêm về 3 dòng lệnh mới này:
D1: Nếu trong TextBox có tên tbNgVao khác rỗng thì thực hiện dòng lệnh kế tiếp
D2:
Mệnh đề trước: Ô thuộc dòng có trị chứa trong tham biến lRs thuộc cột "G" được nhập trị (ngày-tháng-năm) từ hàm TxtToDate với đối số được cung cấp từ TextBox có tên 'tbNgVao'
Mệnh đề sau: Ấn định TextBox 'tbNgVao' chứa chuỗi rỗng
D3: (Miễn bàn)

Còn chuyện bạn muốn trên cột [G] của CSDL của bạn thể hiện chỉ là 'DD/MM' hay chỉ là 'MM/DD' là chuyện của bạn hoàn toàn tự quyết.

Chúc vui!
Xin Cảm ơn SA_DQ thật nhiều trong giúp đỡ Form và giải thích code.
Chúc SA_DQ nhiều niềm vui.
 
Upvote 0
Xin chào các bạn

Tôi đang tìm hiểu vba trong excel và đã sử dụng code trên diễn đàn cho file gửi kèm , nhưng gặp phải vấn đề không tìm kiếm được dữ liệu trong textbox và listbox tại ô E2 của sheet 2.Nhờ các bạn giúp đỡ, xin cảm ơn.
 

File đính kèm

  • tim.xlsm
    44.2 KB · Đọc: 18
Upvote 0
up lại bài để các bạn giúp đỡ ạ.
 
Upvote 0
Xin chào các bạn

Tôi đang tìm hiểu vba trong excel và đã sử dụng code trên diễn đàn cho file gửi kèm , nhưng gặp phải vấn đề không tìm kiếm được dữ liệu trong textbox và listbox tại ô E2 của sheet 2.Nhờ các bạn giúp đỡ, xin cảm ơn.
Tại sheet2 thêm các dòng code sau, phần msgbox bạn có thể thay đổi theo mục đích của mình
Mã:
Private Sub ListBox1_Click()
    MsgBox (ListBox1.Text)
End Sub

Private Sub TextBox1_Change()
    loc
End Sub
 
  • Thích
Reactions: zou
Upvote 0
Tại sheet2 thêm các dòng code sau, phần msgbox bạn có thể thay đổi theo mục đích của mình
Mã:
Private Sub ListBox1_Click()
    MsgBox (ListBox1.Text)
End Sub

Private Sub TextBox1_Change()
    loc
End Sub

Cảm ơn bạn,tôi đã thử vẫn chưa được bạn ạ, 2 sub này tôi cũng đã để trong Workbook rồi nhờ bạn xem giúp
 
Upvote 0
Cảm ơn bạn,tôi đã thử vẫn chưa được bạn ạ, 2 sub này tôi cũng đã để trong Workbook rồi nhờ bạn xem giúp
Bạn đọc lại #29 và thực hiện, không phải bạn muốn đặt code ở đâu là nó sẽ chạy cho bạn đâu.
 
  • Thích
Reactions: zou
Upvote 0
Web KT
Back
Top Bottom