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)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êm if vào thôi. Ví dụ: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.
Cảm ơn bạn đã giúp.Bạn thêm if vào thôi. Ví dụ:
if tbNgVao.Text <>"" then .Cells(lRs, "G").Value = CDate(Me!tbNgVao.Text)
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
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)
Xin Cảm ơn SA_DQ thật nhiều trong giúp đỡ Form và giải thích code.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:
Hàm này đang được dùng để nhập ngày sinh tháng đẻ của HS (học sinh)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 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!
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ìnhXin 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.
Private Sub ListBox1_Click()
MsgBox (ListBox1.Text)
End Sub
Private Sub TextBox1_Change()
loc
End Sub
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