[VBA] xoá 1 vài sản phẩm trong đơn hàng khách đã mua khi đã lưu vào data.

Liên hệ QC

andi1006

Thành viên mới
Tham gia
19/8/21
Bài viết
5
Được thích
0
Chào các bạn,

Mình có 1 cái form để nhập đơn hàng bán cho khách , sau khi nhập xong sẽ bấm lưu đơn hàng này và sẽ insert đơn hàng này vào vào 1 sheet "data" (sheet data chứa tất cả thông tin sản phẩm, số lượng, mã đơn hàng... )

sheet data
Mã đơn hàngTên sản phẩmgiá tiềnSố lượng
dh1gạch20001
dh1xi măng500001
dh1đá200001
dh2gạch20001
dh2xi măng500001
dh2sắt1000001
dh3xi măng500001

vậy khi mà mình dùng form hoá đơn load lại cái đơn hàng 2 ( mã đơn hàng là dh2)
Capture.JPG
mình muốn xoá sản phẩm xi măng và sắt của đơn hàng dh2 trong "sheet data" do khách hàng trả lại, mình gọi lệnh VBA thế nào vậy mọi người.
 
Chào các bạn,

Mình có 1 cái form để nhập đơn hàng bán cho khách , sau khi nhập xong sẽ bấm lưu đơn hàng này và sẽ insert đơn hàng này vào vào 1 sheet "data" (sheet data chứa tất cả thông tin sản phẩm, số lượng, mã đơn hàng... )

sheet data
Mã đơn hàngTên sản phẩmgiá tiềnSố lượng
dh1gạch20001
dh1xi măng500001
dh1đá200001
dh2gạch20001
dh2xi măng500001
dh2sắt1000001
dh3xi măng500001

vậy khi mà mình dùng form hoá đơn load lại cái đơn hàng 2 ( mã đơn hàng là dh2)
View attachment 264359
mình muốn xoá sản phẩm xi măng và sắt của đơn hàng dh2 trong "sheet data" do khách hàng trả lại, mình gọi lệnh VBA thế nào vậy mọi người.
Bạn đưa cái file lên đây tôi sẽ hướng dẫn cách bạn xóa, nhìn hình tôi rất dị ứng.
 
Upvote 0
mình đang không có ở nơi làm việc nên ko có file đó, mình đang dùng userform và xoá khi click vào row trong list
Trên UserForm đó bạn xóa thế nào? Chọn trên ListBox hàng đó và bấm nút xóa hay sao? Mô tả cho rõ vấn đề này cho tôi.
 
Upvote 0
Trên UserForm đó bạn xóa thế nào? Chọn trên ListBox hàng đó và bấm nút xóa hay sao? Mô tả cho rõ vấn đề này cho tôi.
đúng rồi mình đang select cái row rồi xoá

Rows(1).EntireRow.Delete
Rows(2).EntireRow.Delete
mình có thử dùng cách xoá thế bằng cách truyền vào index nhưng mà sẽ sai vì excel nó sẽ tính index lại từ đầu khi xoá 1 dòng, khi thực hiện câu lệnh Rows(1).EntireRow.Delete thì Rows(2).EntireRow.Delete sẽ là row 3

ví dụ mình muốn xoá 2 dòng (1 ->index 1 ; 2 ->index 2)

1 ->index 1
2 ->index 2
3 ->index 3
4 ->index 4
5 ->index 5

khi Rows(1).EntireRow.Delete thì nó sẽ còn là

2 ->index 1
3 ->index 2
4 ->index 3
5 ->index 4

vì vậy khi Rows(2).EntireRow.Delete

nó sẽ xoá cái 3 ->index 2
 
Upvote 0
đúng rồi mình đang select cái row rồi xoá


mình có thử dùng cách xoá thế bằng cách truyền vào index nhưng mà sẽ sai vì excel nó sẽ tính index lại từ đầu khi xoá 1 dòng, khi thực hiện câu lệnh Rows(1).EntireRow.Delete thì Rows(2).EntireRow.Delete sẽ là row 3
Nếu chắc bạn chọn một hàng trên ListBox để xóa thì tôi sẽ nghiên cứu cho bạn, chờ tôi viết code cho bạn.
 
Upvote 0
MultiSelect là thế này, những hàng được chọn cùng một lúc.

1629382457544.png

Tôi không quan tâm xóa 1 dòng hay nhiều dòng, tôi chỉ xác định bạn nạp dữ liệu lên ListBox bằng List hay RowSoure mà thôi. Cái hình này tôi nạp bằng RowSource.
Bài đã được tự động gộp:

Bổ sung thêm là bạn nên thêm 1 cột mã hàng phụ sẽ giải quyết vấn đề này rất nhanh.

1629383004905.png
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom