Sửa giúp code userform

Liên hệ QC

xuantamc6

Thành viên hoạt động
Tham gia
18/11/13
Bài viết
157
Được thích
59
Em chào anh chị,
Em học lóm được một số code trên diễn đàn và thực hành ngay trên userform của mình nhưng bị lỗi mà không mò ra tiếp,
Mong các thầy các anh các chị hướng dẫn trợ giúp thêm
Em có sheet HOME, trong đó có trường: "NHẬP THÔNG TIN KH" mở userform ra nhưng khi nhập thì nó bị lỗi. Nó chỉ hiểu khi userform đứng đúng sheet "THONGTINKH"
Và có một vấn đề nữa là khi mình show danh sách ra, nếu có một mã khách hàng được lặp đi lặp lại, khi ta click vào nó chỉ hiểu cái đầu tiên mà không hiện ra những dòng được lặp lại sau đó và như vậy thì không sửa được
 

File đính kèm

Em chào anh chị,
Em học lóm được một số code trên diễn đàn và thực hành ngay trên userform của mình nhưng bị lỗi mà không mò ra tiếp,
Mong các thầy các anh các chị hướng dẫn trợ giúp thêm
Em có sheet HOME, trong đó có trường: "NHẬP THÔNG TIN KH" mở userform ra nhưng khi nhập thì nó bị lỗi. Nó chỉ hiểu khi userform đứng đúng sheet "THONGTINKH"
Và có một vấn đề nữa là khi mình show danh sách ra, nếu có một mã khách hàng được lặp đi lặp lại, khi ta click vào nó chỉ hiểu cái đầu tiên mà không hiện ra những dòng được lặp lại sau đó và như vậy thì không sửa được
bạn sửa code của bạn lại dòng này
Set Rng = Sheet2.Range([B3], [B3].End(xlDown))
thành
Mã:
Set Rng = Sheet2.Range("B3:B" & Worksheets("THONGTINKH").Cells(Worksheets("THONGTINKH").Rows.Count, "B").End(xlUp).Row)
 
Upvote 0
bạn sửa code của bạn lại dòng này
Set Rng = Sheet2.Range([B3], [B3].End(xlDown))
thành
Mã:
Set Rng = Sheet2.Range("B3:B" & Worksheets("THONGTINKH").Cells(Worksheets("THONGTINKH").Rows.Count, "B").End(xlUp).Row)

Cám ơn anh. với cho em hỏi, trong file của em khi nhập các trường có ngày tháng thì nó bị đảo ngược. Em làm format dd/mm/yyyy mà không được ạ
 
Upvote 0
máy mình hiện ngày tháng năm dd/mm/yyyy thường
 
Upvote 0
Có một vấn đề gặp phải đó nữa là có thể một khách hàng được lặp lại nhiều lần, nhưng khi show và nhấp click vào để sửa thì chỉ hiện thị thông tin lần nhập đầu tiên. Ở đây chỉ có Mã khách hàng, tên khách hàng, thông tin cá nhân là giống nhau nhưng những trường thông tin khác thì khác nhau. Nên nhiều khi mình muốn lick vào những thông tin dòng sau để sửa thì lại không được
 
Upvote 0
Bạn nếu đúng là học viết code trên GPE này thì cách viết của bạn quá hàn lâm & không hợp với mình; Nên mình không đọc
Vì đã không đọc nên nên sai đúng chỗ nào cũng không thể quan tậm
PHP:
Private Sub MKH_AfterUpdate()
Dim Rng As Range, Cl As Range
Set Rng = Sheet2.Range(Sheet2.[B3], Sheet2.[B3].End(xlDown))
        Set Cl = Rng.Find(UserForm1.MKH, , xlValues, xlWhole)
            If Not Cl Is Nothing Then
            sRow = Cl.Row
                    With UserForm1
                    .TKH = Cl.Offset(, 1)
                    .TTDC = Cl.Offset(, 2)
                    .SDT = Cl.Offset(, 3)
                    .SN = Format(Cl.Offset(, 4), "dd/mm/yyyy")
                    .EMAIL = Cl.Offset(, 5)
                    .CVCD = Cl.Offset(, 6)
                    .NLH = Cl.Offset(, 7)
                    .TKTT = Cl.Offset(, 8)
                    .TKV = Cl.Offset(, 9)
                    .STV = Cl.Offset(, 10)
                    .THV = Cl.Offset(, 11)
                    .SPV = Cl.Offset(, 12)
                    .SHDTD = Cl.Offset(, 13)
                    .NHDTD = Cl.Offset(, 14)
                    With Cl.Offset(0, 14)
      .NumberFormat = "dd/mm/yyyy"
      .Value = DMYtoDate(Me.NHDTD.Text)
      End With
                    .SHDTC = Cl.Offset(, 15)
                    .NHDTC = Cl.Offset(, 16)
                    With Cl.Offset(0, 16)
      .NumberFormat = "dd/mm/yyyy"
      .Value = DMYtoDate(Me.NHDTC.Text)
      End With
                    .MTSDB = Cl.Offset(, 17)
                    .GTTSDB = Cl.Offset(, 18)
                    .DT = Cl.Offset(, 19)
                    .DCTSDB = Cl.Offset(, 20)
                    .NGN = Cl.Offset(, 21)
                    With Cl.Offset(0, 21)
      .NumberFormat = "dd/mm/yyyy"
      .Value = DMYtoDate(Me.NGN.Text)
      End With
                    .NTN = Cl.Offset(, 22)
                    With Cl.Offset(0, 22)
      .NumberFormat = "dd/mm/yyyy"
      .Value = DMYtoDate(Me.NTN.Text)
      End With
                    .GIAYDIDUONG = Cl.Offset(, 23)
                    With Cl.Offset(0, 23)
      .NumberFormat = "dd/mm/yyyy"
      .Value = DMYtoDate(Me.GIAYDIDUONG.Text)
      End With
                    .GC = Cl.Offset(, 24)
                    End With
                    Else
                    MsgBox "KHONG CO THONG TIN"
                    End If
End Sub

Tạm biệt bạn & chúc vui!
PHP:
Private Sub MKH_AfterUpdate()
 Dim Rng As Range, Cl As Range
 
 Set Rng = Sheet2.Range(Sheet2.[B3], Sheet2.[B3].End(xlDown))
 Set Cl = Rng.Find(UserForm1.MKH, , xlValues, xlWhole)
 If Not Cl Is Nothing Then
    sRow = Cl.Row
    With UserForm1
        .TKH = Cl.Offset(, 1):                  .TTDC = Cl.Offset(, 2)
        .SDT = Cl.Offset(, 3)
        .SN = Format(Cl.Offset(, 4), "dd/mm/yyyy")
        .EMAIL = Cl.Offset(, 5):                .CVCD = Cl.Offset(, 6)
        .NLH = Cl.Offset(, 7):                  .TKTT = Cl.Offset(, 8)
        .TKV = Cl.Offset(, 9):                  .STV = Cl.Offset(, 10)
        .THV = Cl.Offset(, 11):                 .SPV = Cl.Offset(, 12)
        .SHDTD = Cl.Offset(, 13):               .NHDTD = Cl.Offset(, 14)
        With Cl.Offset(0, 14)
            .NumberFormat = "dd/mm/yyyy"
            .Value = DMYtoDate(Me.NHDTD.Text)
        End With
        .SHDTC = Cl.Offset(, 15):               .NHDTC = Cl.Offset(, 16)
        With Cl.Offset(0, 16)
            .NumberFormat = "dd/mm/yyyy"
            .Value = DMYtoDate(Me.NHDTC.Text)
        End With
        .MTSDB = Cl.Offset(, 17):               .GTTSDB = Cl.Offset(, 18)
        .DT = Cl.Offset(, 19):                  .DCTSDB = Cl.Offset(, 20)
        .NGN = Cl.Offset(, 21):
        With Cl.Offset(0, 21)
            .NumberFormat = "dd/mm/yyyy"
            .Value = DMYtoDate(Me.NGN.Text)
        End With
        .NTN = Cl.Offset(, 22):
        With Cl.Offset(0, 22)
            .NumberFormat = "dd/mm/yyyy"
            .Value = DMYtoDate(Me.NTN.Text)
        End With
        .GIAYDIDUONG = Cl.Offset(, 23)
        With Cl.Offset(0, 23)
            .NumberFormat = "dd/mm/yyyy"
            .Value = DMYtoDate(Me.GIAYDIDUONG.Text)
        End With
        .GC = Cl.Offset(, 24)
        End With
    Else
        MsgBox "KHONG CO THONG TIN"
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cho em hỏi là trong file có một mã khách hàng được lặp đi lăp lại nhiều lần với các thông tin phía sau khác nhau , mình sẽ sửa code như thế nào để khi tìm kiếm nó có thể show ra và sửa được tất cả nhứng thông tin đó ạ?
 
Upvote 0
Cho em hỏi là trong file có một mã khách hàng được lặp đi lăp lại nhiều lần với các thông tin phía sau khác nhau , mình sẽ sửa code như thế nào để khi tìm kiếm nó có thể show ra và sửa được tất cả nhứng thông tin đó ạ?
Vì file của bạn đã bị khóa, nên mình gởi file này bạn tham khảo;
Trong file là cách tím các mã khi ta nhập 5 ký số đầu của mã & . . . .
Muốn sửa từng dòng dữ liệu nào đó trên ListBox, bạn cần Click lên dòng dữ liệu đó, để chúng được chuyển lên các TextBox cho bạn sửa; Tất nhiên không thể sửa trường Mã duy nhất (để xác định dòng dữ liệu)
Muốn lưu sau sửa chữ thì:
a./ Tìm theo mã duy nhất
b./ Lưu trị trong các Control vô dòng chứa mã đã tìm thấy

Chúc thành công!
 

File đính kèm

Upvote 0
Vì file của bạn đã bị khóa, nên mình gởi file này bạn tham khảo;
Trong file là cách tím các mã khi ta nhập 5 ký số đầu của mã & . . . .
Muốn sửa từng dòng dữ liệu nào đó trên ListBox, bạn cần Click lên dòng dữ liệu đó, để chúng được chuyển lên các TextBox cho bạn sửa; Tất nhiên không thể sửa trường Mã duy nhất (để xác định dòng dữ liệu)
Muốn lưu sau sửa chữ thì:
a./ Tìm theo mã duy nhất
b./ Lưu trị trong các Control vô dòng chứa mã đã tìm thấy

Chúc thành công!
ủa file em bình thường mà nhỉ, đâu có khóa đâu
 
Upvote 0
Private Sub LISTKH_Click()
With UserForm1
If .LISTKH.ListCount < 1 Then Exit Sub
.MKH = .LISTKH.List(.LISTKH.ListIndex, 0)
.TKH.SetFocus
End With
MKH_AfterUpdate
NHAPDULIEU.Enabled = False
CAPNHAT.Enabled = True
End Sub

Private Sub MKH_AfterUpdate()
Dim Rng As Range, Cl As Range
Set Rng = Sheet2.Range("B3:B" & Worksheets("THONGTINKH").Cells(Worksheets("THONGTINKH").Rows.Count, "B").End(xlUp).Row)
Set Cl = Rng.Find(UserForm1.MKH, , xlValues, xlWhole)
If Not Cl Is Nothing Then
sRow = Cl.Row
With UserForm1
.TKH = Cl.Offset(, 1)
.TTDC = Cl.Offset(, 2)
.SDT = Cl.Offset(, 3)
.SN = Format(Cl.Offset(, 4), "dd/mm/yyyy")
.EMAIL = Cl.Offset(, 5)
.CVCD = Cl.Offset(, 6)
.NLH = Cl.Offset(, 7)
.TKTT = Cl.Offset(, 8)
.TKV = Cl.Offset(, 9)
.STV = Cl.Offset(, 10)
.THV = Cl.Offset(, 11)
.SPV = Cl.Offset(, 12)
.SHDTD = Cl.Offset(, 13)
.NHDTD = Cl.Offset(, 14)
With Cl.Offset(0, 14)
.NumberFormat = "dd/mm/yyyy"
.Value = DMYtoDate(Me.NHDTD.Text)
End With
.SHDTC = Cl.Offset(, 15)
.NHDTC = Cl.Offset(, 16)
With Cl.Offset(0, 16)
.NumberFormat = "dd/mm/yyyy"
.Value = DMYtoDate(Me.NHDTC.Text)
End With
.MTSDB = Cl.Offset(, 17)
.GTTSDB = Cl.Offset(, 18)
.DT = Cl.Offset(, 19)
.DCTSDB = Cl.Offset(, 20)
.NGN = Cl.Offset(, 21)
With Cl.Offset(0, 21)
.NumberFormat = "dd/mm/yyyy"
.Value = DMYtoDate(Me.NGN.Text)
End With
.NTN = Cl.Offset(, 22)
With Cl.Offset(0, 22)
.NumberFormat = "dd/mm/yyyy"
.Value = DMYtoDate(Me.NTN.Text)
End With
.GIAYDIDUONG = Cl.Offset(, 23)
With Cl.Offset(0, 23)
.NumberFormat = "dd/mm/yyyy"
.Value = DMYtoDate(Me.GIAYDIDUONG.Text)
End With
.GC = Cl.Offset(, 24)
End With
Else
MsgBox "KHONG CO THONG TIN"
End If
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom