tìm và xóa sản phẩm từ listbox nhờ anh chị giúp

Liên hệ QC

hoc341992

Thành viên chính thức
Tham gia
27/7/17
Bài viết
77
Được thích
5
Giới tính
Nam
em tự tìm và làm theo hướng dẫn trên mạng cũng được tới đây rồi, nhưng gặp phải một lỗi khi xóa sản phẩm từ listbox mong anh chị giúp em, trong file excel đính kèm ở sheet 2 có 4 sản phẩm ( từ 1 đến 4 ). Khi mình xóa các sản phẩm từ 1 đến 3 thì được, nhưng khi xóa sản phẩm cuối ( 4 ) là nó sẽ xóa kèm theo hết các sản phẩm trong listbox ( xóa luôn sản phẩm 1 đến 3 ). Nhờ anh chị đi ngang qua giúp e sửa lại đoạn code. e cảm ơn nhiều
 

File đính kèm

  • Book1QN (3).xlsm
    46 KB · Đọc: 61
PHP:
For i = 0 To Userform.Listbox1.ListCount - 1

        If Userform.Listbox1.Selected(i) Then

           Userform.Listbox1.RemoveItem (i)

        End If

    Next i

Đoạn code trên xóa dòng được chọn của listbox1 trong userform. Bạn thay đổi các đối tượng cho phù hợp với file của bạn nhé!
 
PHP:
For i = 0 To Userform.Listbox1.ListCount - 1

        If Userform.Listbox1.Selected(i) Then

           Userform.Listbox1.RemoveItem (i)

        End If

    Next i

Đoạn code trên xóa dòng được chọn của listbox1 trong userform. Bạn thay đổi các đối tượng cho phù hợp với file của bạn nhé!
a sửa trên code cho e luôn được không a, tại e muốn vừa xóa trên listbox tìm kiếm, vừa xóa trên shhet2
 
PHP:
For i = 0 To Userform.Listbox1.ListCount - 1

        If Userform.Listbox1.Selected(i) Then

           Userform.Listbox1.RemoveItem (i)

        End If

    Next i

Đoạn code trên xóa dòng được chọn của listbox1 trong userform. Bạn thay đổi các đối tượng cho phù hợp với file của bạn nhé!
sao nó cứ xóa dòng đầu ở sheet2 anh
 
Trong code btnXuatKho_Click, bạn thoát luôn sub sau khi remove item(i)
PHP:
NextI:

Next

End Sub

Sửa thành:
PHP:
Next

NextI:

End Sub
 
Xem code bạn viết thì đúng là đi copy quá trời, về nguyên tắc xóa thì xóa phải xóa từ dưới lên trên, tức là đi check phần tử được lựa chọn từ dòng cao nhất tới dòng thấp nhất
for i=listbox.listcount to 0 step -1

Listbox của bạn dùng chế độ chọn một phần tử, nên cũng không cần phải đi duyệt phần tử làm gì, dùng luôn thuộc tính listindex là biết dòng nào đang được lựa chọn.
 
Dim i&, k&
If Me.lbTimKiem.ListIndex = -1 Then Exit Sub
For i = 0 To Me.lbTimKiem.ListCount - 1

If Me.lbTimKiem.Selected(i) Then

For k = i To UBound(sArray)
If sArray(k, 1) = Me.lbTimKiem.List(i, 0) Then
Sheet2.Range("F" & k + 5 & ":L" & k + 5).Delete Shift:=xlUp
Me.lbTimKiem.RemoveItem i
GoTo NextI
End If
Next

End If
NextI:
Next

em làm như thế này thì xóa ok rồi nhưng nó bị như vầy mấy a. khi dữ liệu nhập vào từ form thì để k +5 thì xuất kho ok, khi dữ liệu nhập vào từ bảng tính excel thì để k+4 mới xuất kho ok được.
 
Dim i&, k&
If Me.lbTimKiem.ListIndex = -1 Then Exit Sub
For i = 0 To Me.lbTimKiem.ListCount - 1

If Me.lbTimKiem.Selected(i) Then

For k = i To UBound(sArray)
If sArray(k, 1) = Me.lbTimKiem.List(i, 0) Then
Sheet2.Range("F" & k + 5 & ":L" & k + 5).Delete Shift:=xlUp
Me.lbTimKiem.RemoveItem i
GoTo NextI
End If
Next

End If
NextI:
Next

em làm như thế này thì xóa ok rồi nhưng nó bị như vầy mấy a. khi dữ liệu nhập vào từ form thì để k +5 thì xuất kho ok, khi dữ liệu nhập vào từ bảng tính excel thì để k+4 mới xuất kho ok được.
Không xóa được STT phải làm sao?
Bài đã được tự động gộp:

đúng là đi copy quá trời thật code lúc sheet1 lúc sheet2 làm mình đưa buttom xóa vào thì không xóa được STT
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom