Giúp sửa code vba xóa dòng theo điều kiện.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nguyenluc911

Thành viên mới
Tham gia
15/9/11
Bài viết
6
Được thích
0
Đây là một đoạn mã VBA trong Microsoft Excel, được sử dụng để tạo UserForm hiển thị dữ liệu từ bảng "TEMP" trong Excel.
Mình muốn khi click vào nút xóa dòng nào thì sẽ xóa dòng tương ứng trong Sheet "TEMP" và load lại Userform
screenshot_1678430124.png
 

File đính kèm

  • LOAD FORM TỰ ĐỘNG.xlsm
    58.2 KB · Đọc: 12
Lần chỉnh sửa cuối:
Đây là một đoạn mã VBA trong Microsoft Excel, được sử dụng để tạo UserForm hiển thị dữ liệu từ bảng "TEMP" trong Excel.
Mình muốn khi click vào nút xóa dòng nào thì sẽ xóa dòng tương ứng trong Sheet "TEMP" và load lại Userform
View attachment 287480
Nên sửa lại tiêu đề thành: "Giúp sửa code vba xóa dòng theo điều kiện".
Không nên chèn thêm tiếng Tây vào làm gì.
 
Upvote 0
Đây là một đoạn mã VBA trong Microsoft Excel, được sử dụng để tạo UserForm hiển thị dữ liệu từ bảng "TEMP" trong Excel.
Mình muốn khi click vào nút xóa dòng nào thì sẽ xóa dòng tương ứng trong Sheet "TEMP" và load lại Userform
View attachment 287480
Mình nghĩ nên đưa dữ liệu vào listbox, ở chế độ chọn multi (chọn một hoặc nhiều dòng)
Chỉ tạo 1 nút xóa dòng duy nhất. Khi bấm nút thì các dòng được chọn sẽ xóa và cập nhật lại dữ liệu sau khi xóa. Bạn không nói rõ là xóa dữ liệu đó và để trống dòng, hay xóa dồn dòng lên, nếu xóa dồn lên mà sau đó muốn xóa tiếp, thì dòng tính theo stt dòng trên sheet, hay tính theo chữ "Dòng 1, 2.." như bạn đề cập. Vì sau khi xóa mà xóa tiếp thì stt dữ liệu bị đứt quãng
 
Upvote 0
Mình nghĩ nên đưa dữ liệu vào listbox, ở chế độ chọn multi (chọn một hoặc nhiều dòng)
Chỉ tạo 1 nút xóa dòng duy nhất. Khi bấm nút thì các dòng được chọn sẽ xóa và cập nhật lại dữ liệu sau khi xóa. Bạn không nói rõ là xóa dữ liệu đó và để trống dòng, hay xóa dồn dòng lên, nếu xóa dồn lên mà sau đó muốn xóa tiếp, thì dòng tính theo stt dòng trên sheet, hay tính theo chữ "Dòng 1, 2.." như bạn đề cập. Vì sau khi xóa mà xóa tiếp thì stt dữ liệu bị đứt quãng
Cảm ơn bạn đã góp ý! Mình muốn xóa xong nó sẽ dồn dòng lên trong sheet.
 
Upvote 0
Upvote 0

File đính kèm

  • LOAD FORM TỰ ĐỘNG.xlsm
    56.9 KB · Đọc: 12
Upvote 0
Ý mình là Vẫn để form cũ, chỉ cần viết một class xóa dòng tương ứng trong sheet mỗi khi click vào nút xóa dòng trên form là được rồi.
Tôi thắc mắc nếu dữ liệu 100 dòng thì bạn xử lý giao diện như thế nào trên Userform theo cách bạn đang làm?
 
Upvote 0
Đây là một đoạn mã VBA trong Microsoft Excel, được sử dụng để tạo UserForm hiển thị dữ liệu từ bảng "TEMP" trong Excel.
Mình muốn khi click vào nút xóa dòng nào thì sẽ xóa dòng tương ứng trong Sheet "TEMP" và load lại Userform

Hôm nay rảnh xem lại bài này của bạn thì thấy với việc tạo hàng loạt textbox, button giống nhau như vậy, tốt nhất là bạn viết cái Class cho nó để cho còn có thể tái sử dụng code, tạo cho các các Form khác.
Dưới đây là file demo đơn giản dùng Class, chưa bẫy lỗi, tính tới nhiều trường hợp khác có thể phát sinh nhé. Bạn tự ngâm cứu và thêm các code cần thiết theo nhu cầu.

Sẳn qua bài này mình mới thấy là trong VBA không dùng được Class lồng trong Class hay do mình làm sai hướng. Không biết bác nào có ví dụ đơn giản code gọi một Class khác trong một Class thì chia sẻ tham khảo nhe. Cảm ơn.

 

File đính kèm

  • LOAD FORM TU DONG-Class.xlsm
    48.4 KB · Đọc: 9
Upvote 0
Hôm nay rảnh xem lại bài này của bạn thì thấy với việc tạo hàng loạt textbox, button giống nhau như vậy, tốt nhất là bạn viết cái Class cho nó để cho còn có thể tái sử dụng code, tạo cho các các Form khác.
Dưới đây là file demo đơn giản dùng Class, chưa bẫy lỗi, tính tới nhiều trường hợp khác có thể phát sinh nhé. Bạn tự ngâm cứu và thêm các code cần thiết theo nhu cầu.

Sẳn qua bài này mình mới thấy là trong VBA không dùng được Class lồng trong Class hay do mình làm sai hướng. Không biết bác nào có ví dụ đơn giản code gọi một Class khác trong một Class thì chia sẻ tham khảo nhe. Cảm ơn.

Cảm ơn bạn rất nhiều. Đúng ý mình rồi đấy
 
Upvote 0
....

Sẳn qua bài này mình mới thấy là trong VBA không dùng được Class lồng trong Class hay do mình làm sai hướng. Không biết bác nào có ví dụ đơn giản code gọi một Class khác trong một Class thì chia sẻ tham khảo nhe. Cảm ơn.

VBA class chỉ không có khái niệm thừa kế,
Còn gọi 1 class từ class khác, thì cứ khai báo theo đối tượng (instance) cho class muốn gọi trong class gọi, và thực thi là được
 
Upvote 0
VBA class chỉ không có khái niệm thừa kế,
Còn gọi 1 class từ class khác, thì cứ khai báo theo đối tượng (instance) cho class muốn gọi trong class gọi, và thực thi là được

Do làm vội nên khai báo sai trong Class nên lay hoay các kiểu mà nó không lỗi và cũng không chạy được. Giờ bạn nói tôi mới để ý kỹ, sửa lại chút thì code nó gọn hơn nhiều.
 

File đính kèm

  • LOAD FORM TU DONG-Class.xlsm
    51.3 KB · Đọc: 11
  • Cảm ơn
Reactions: TH2
Upvote 0
... tốt nhất là bạn viết cái Class cho nó để cho còn có thể tái sử dụng code, tạo cho các các Form khác.
...
Theo tôi nhận thấy thì thớt muốn dùng một cái mà trong Dot Net WinForm gọi là DataGridview, WebForm gọi là Gridview.
Nếu muốn dùng Class thì có lẽ bạn nên lục tài liệu Winform hoặc MVC để tìn hiểu cách người ta thiết kế giao diện (bề ngoài) vfa cấu trúc (bên trong) của control nàym
 
Upvote 0
Theo tôi nhận thấy thì thớt muốn dùng một cái mà trong Dot Net WinForm gọi là DataGridview, WebForm gọi là Gridview.
Nếu muốn dùng Class thì có lẽ bạn nên lục tài liệu Winform hoặc MVC để tìn hiểu cách người ta thiết kế giao diện (bề ngoài) vfa cấu trúc (bên trong) của control nàym
:) Nếu dùng được DataGridview lên Userform của Excel thì tốt quá còn gì anh, chuyên trị cho hiển thị CSDL.
Cái gốc yêu cầu của thớt là hiển thị nội dung cái hóa đơn (không vượt quá 15 dòng). Nếu hiển thị các dòng trên hóa đơn thì phải Thêm, Sửa, Xóa trực tiếp trên các dòng do đó dùng Listbox là không phù hợp. Nếu có cái ActiveX nào tương đương DataGridview cho Excel Uerform (UF) thì lấy mà dùng cho nó gọn. Giờ không có nên dùng cách vẽ Textbox lên UF. Và vì vẽ hàng loạt Control với các sự kiện đi kèm nên em mới gợi ý viết Class cho trường hợp này. :)
 
Upvote 0
Web KT

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

Back
Top Bottom