Hướng dẫn cách xóa nội dung bất kỳ trong bảng danh sách trong Excel bằng VBA

Đây là Seri bài viết hướng dẫn việc ứng dụng VBA trong quản lý nội dung trong bảng danh sách (danh sách hàng hóa, danh sách nhân viên…), gồm 5 phần:

Sau đây chúng ta cùng tìm hiểu nội dung của phần 4 qua bài tập sau:

Cho bảng dữ liệu về Danh sách nhân viên như hình bên dưới:

Yêu cầu

  • Xóa nội dung bất kỳ trong bảng danh sách nhân viên tương ứng theo vị trí được chọn
  • Thực hiện việc này ngay khi sheet đang khóa

Cách làm

1. Phân tích yêu cầu

Bài tập này giúp chúng ta kết hợp với nội dung bài học trước (Sự kiện chọn 1 vị trí trong bảng) với logic về việc xóa dữ liệu, cập nhật nội dung bảng dữ liệu. Tất cả các nội dung này chúng ta đã biết từ trong các bài học trước, ở đây chỉ là việc chúng ta sắp xếp thứ tự các công việc diễn ra theo trình tự phù hợp với mong muốn.

=> Xác định rõ logic của việc chọn và xóa nội dung được chọn.

  • Chọn nội dung trong bảng => Xác định vị trí dòng được chọn. Dòng này phải nằm trong bảng và phải có dữ liệu
  • Xóa nội dung dòng được chọn
  • Sắp xếp lại dữ liệu trong bảng sau khi xóa để tránh việc xuất hiện dòng trống xen kẽ dữ liệu trong bảng
  • Mở khóa trước khi thực hiện câu lệnh, khóa lại bảng tính sau khi hoàn thành câu lệnh.

2. Cách thực hiện

Xác định dòng được chọn: Tương tự bài học Phần 3, lệnh xác định dòng được chọn là:

ActiveCell.Row

Dòng được chọn phải nằm trong bảng và phải có dữ liệu: Tính từ dòng bắt đầu của bảng tới dòng cuối có chứa dữ liệu trong bảng

Dòng được chọn >= Dòng bắt đầu trong bảng (Dòng 8)

Dòng được chọn <= Dòng cuối có chứa dữ liệu trong bảng (Câu lệnh tìm dòng cuối của bảng – Xem lại bài Phần 2)

If ActiveCell.Row <= 8 And ActiveCell.Row >= DongCuoi Then

End If

Lưu ý là Nếu Dòng Cuối của bảng <8 (Bảng không có dữ liệu) thì chúng ta phải loại trường hợp này đi => Cần lồng thêm 1 hàm IF

IF DongCuoi <8 Then

Exit Sub

ElseIf ActiveCell.Row <= 8 And ActiveCell.Row >= DongCuoi Then

End If

Xóa nội dung được chọn: Làm trống nội dung ở dòng được chọn, từ cột A tới cột D trong Sheet1

Sheet1.Range(“A” & ActiveCell.Row & “:” & “D” & ActiveCell.Row).ClearContents

Sắp xếp lại nội dung trong bảng để loại bỏ dòng trống xen kẽ: Record macro để tìm hiểu lệnh Sắp xếp dữ liệu trong bảng danh sách => Việc sắp xếp này sẽ loại bỏ dòng trống xen kẽ với dữ liệu trong bảng.

ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“A8:A24”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“A7:D24”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Như vậy chúng ta có Sub Xóa dữ liệu trong VBA như sau:

3. Gán Macro vào nút lệnh Xóa

  • Tạo nút lệnh Xóa giống như nút lệnh Thêm mới / Lưu (Xem lại Phần 1)
  • Gán Macro vào nút lệnh Xóa

Bây giờ chúng ta chọn bất kỳ 1 dòng trong bảng dữ liệu và bấm vào nút lệnh Xóa để xem kết quả đã đúng như ý muốn chưa nhé.

Kết quả hoàn thành sẽ như sau (ví dụ với trường hợp xóa NV003)

4. Kết luận

Khi ứng dụng VBA vào công việc, chúng ta cần phải xác định rõ nội dung trình tự công việc bằng lời trước, sau đó mới từng bước thực hiện công việc thông qua VBA

Ở bài học này có thêm việc Sắp xếp nội dung sau mỗi lần xóa => Có thể kết hợp với việc Sắp xếp nội dung sau mỗi lần Lưu nội dung => Như vậy việc Thêm mới nội dung cũng sẽ được tự động sắp xếp lại bảng dữ liệu.

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook… giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp…

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại: