Hướng dẫn xóa dữ liệu Excel trong bảng danh sách bằng lệnh VBA

Nội dung được viết bởi Ngọc Diệp

Trong bài viết ngày hôm nay, chúng ta sẽ tìm hiểu cách xóa dữ liệu Excel trong các bảng danh sách bằng lệnh VBA Excel. Làm thế nào để loại bỏ dữ liệu thừa mà không phải thực hiện xóa thủ công?  Các bạn hãy cùng Gitiho khám phá trong bài viết ngày hôm nay nhé.

Đề bài xóa dữ liệu Excel bằng lệnh VBA

Giả sử chúng ta có bảng dữ liệu Danh sách nhân viên dưới đây. Yêu cầu của đề bài bao gồm hai phần việc:

  • Xóa nội dung trong bảng danh sách tương ứng với vị trí đã chọn.
  • Thực hiện xóa dữ liệu Excel ngay cả khi trang tính đang được khóa.

Hướng dẫn xóa dữ liệu Excel trong bảng danh sách bằng lệnh VBA
 

Nếu bạn chưa biết cách thêm mới dung vào một bảng danh sách trong Excel bằng lệnh VBA Excel, hãy tham khảo bài viết dưới đây nhé.
 

Xem thêm: Làm thế nào thêm mới nội dung vào bảng danh sách trong Excel bằng VBA

Cách xóa dữ liệu Excel bằng lệnh VBA

Phân tích yêu cầu xóa dữ liệu Excel

Trước khi bắt tay vào viết lệnh xóa dữ liệu trong Excel bằng VBA, chúng ta cần phân tích kỹ lưỡng yêu cầu của đề bài để thực hiện đúng các thao tác cần thiết. Để xóa một nội dung theo đúng phạm vi đã chọn, chúng ta cần hoàn thành các bước sau:

  1. Chọn nội dung: Xác định vị trí dòng trong bảng Excel chứa nội dung cần xóa. Dòng này bắt buộc phải nằm trong phạm vi bảng danh sách và có chứa nội dung.
  2. Xóa nội dung: Tiến hành xóa dữ liệu Excel trong dòng đã chọn.
  3. Sắp xếp dữ liệu: Đặt dữ liệu còn lại trong bảng theo một trình tự nhất định để tránh việc xuất hiện dòng trống vô nghĩa xen giữa các dòng có chứa nội dung trong bảng.
  4. Khóa bảng: Mở khóa trước khi thực hiện câu lệnh và khóa lại bảng tính sau khi đã hoàn thành câu lệnh.

Việc chọn một vị trí trong bảng được gọi là một sự kiện xảy ra trong trang tính. Định nghĩa sự kiện này bao gồm tất cả các hành động chúng ta thao tác, ví dụ như nhập nội dung vào một ô tính, chọn một ô tính, thay đổi nội dung ô tính,... Để tìm hiểu cách chọn một ô tính hoặc thay đổi một ô tính sau khi đã chọn, các bạn hãy tham khảo bài viết dưới đây nhé.

Xem thêm: Hướng dẫn cách lấy thông tin trong bảng danh sách chỉ với 1 click chuột bằng VBA trong Excel

Các bước xóa dữ liệu Excel bằng lệnh VBA

Sau khi đã xác định các bước thực hiện, chúng ta sẽ thao tác từng bước một để đảm bảo không xảy ra sai sót trong quá trình viết lệnh xóa dữ liệu trong Excel bằng VBA nhé.

Chọn nội dung cần xóa

Hãy bắt đầu với một lệnh VBA Excel xác định dòng được chọn bằng lệnh:

ActiveCell.Row

Các bạn hãy lưu ý dòng được chọn này phải nằm trong bảng Excel và có chứa dữ liệu, nghĩa là tính từ dòng bắt đầu của bảng tới dòng cuối cùng chứa dữ liệu trong bảng. Như vậy, dòng được chọn có thể nằm trong phạm vi từ dòng 8 tới dòng cuối bảng. Với điều kiện này, bạn sử dụng cấu trúc IF và viết một lệnh VBA Excel như sau:

 

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

End If

Lưu ý: Nếu dòng cuối của bảng Excel nhỏ hơn 8 (dòng đầu) nghĩa là bảng không có dữ liệu. Trong trường hợp này, bạn sẽ cần lồng thêm một cấu trúc IF nữa để loại bỏ bảng này khỏi phạm vi thao tác xóa dữ liệu Excel.

IF DongCuoi <8 Then
Exit Sub
ElseIf ActiveCell.Row <= 8 And ActiveCell.Row >= DongCuoi Then

End If

Nếu bảng Excel của bạn có quá nhiều dòng chứa dữ liệu, có lẽ bạn sẽ cần một phương thức tìm dòng cuối thay vì tự tìm thủ công. Hãy tìm hiểu cách sử dụng lệnh VBA Excel để tìm dòng cuối chứa dữ liệu trong bảng Excel tại bài viết dưới đây nhé.

Xem thêm: Hướng dẫn cách tìm dòng cuối trong VBA cho dữ liệu bảng Excel

Xóa dữ liệu Excel đã chọn

Tiếp theo, chúng ta thực hiện làm trống nội dung ở dòng đã chọn từ cột A tới cột D trong bảng danh sách bằng lệnh:

Sheet1.Range(“A” & ActiveCell.Row & “:” & “D” & ActiveCell.Row).ClearContentsTrong đó, cấu trúc Sheet1.Rang sẽ xác định phạm vi ô từ cột A đến cột D của dòng đã chọn để cấu trúc ClearContents xóa dữ liệu Excel tồn tại trong phạm vi ô đó.

Sắp xếp lại nội dung

Sau khi đã xóa dữ liệu Excel thừa hoặc không còn chính xác, chúng ta tiến hành sắp xếp lại toàn bộ nội dung trong bảng để loại bỏ các khoảng trống vô nghĩa xen giữa. Lúc này, chúng ta sẽ sử dụng một macro bằng cách viết lệnh VBA Excel sau:

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

Xem thêm: Hướng dẫn cách viết code để tự động sắp xếp bảng tính Excel bằng record macro

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

Kết hợp các câu lệnh đã viết là chúng ta đã có một lệnh VBA Excel hoàn chỉnh cho công việc xóa dữ liệu Excel rồi. Dưới đây là toàn bộ lệnh, bạn có thể copy và paste vào cửa sổ VBA để dễ dàng thao tác với dữ liệu trang tính của mình nhé.

Sub Lenh_Xoa_NoiDung()
'Tim dong cuoi bang du lieu
    Dim DongCuoi As Long
        DongCuoi = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row
'Bien luan cac truong hop
    If DongCuoi < 0 Then
        Exit Sub
    ElseIf ActivateCell.Row >= 0 And ActiveCell.Row <= DongCuoi Then
        'Mo khoa sheet
            Sheet1.Unprotect
        'Xoa noi dung
            Sheet1.Range("A" & ActiveCell.Row & ":" & "D" & ActiveCell.Row).ClearContents
        'Sap xep voi chuc nang Sort cho bang trong pham vi A7:D24, bao gom ca dong tieu de
            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
        'Khoa Sheet
            Sheet1.Protect
        'Thong bao xoa thanh cong
            MsgBox "Xoa du lieu thanh cong"
    End If
End SubSau khi thoát cửa sổ VBA, hãy tạo một hộp thoại đại diện cho thao tác xóa dữ liệu Excel tại màn hình trang tính bằng cách sử dụng công cụ Shape. Bạn nhấn chuột phải tại hộp thoại vừa tạo và nhấn Assign Macro. Hộp thoại Assign Macro hiện lên, bạn chọn Lenh_Xoa_NoiDung để áp dụng lệnh xóa dữ liệu Excel cho hộp thoại.

 

Hướng dẫn xóa dữ liệu Excel trong bảng danh sách bằng lệnh VBA

Xem thêm: Hướng dẫn cách gán macro vào biểu tượng nút điều khiển tạo bởi Shapes trong Excel

Hãy cùng kiểm nghiệm macro cho bảng Excel của chúng ta nhé. Chúng ta sẽ thử áp dụng phương pháp xóa dữ liệu trong Excel bằng VBA vừa học để xóa thông tin nhân viên với mã NV003 tại dòng 10 tại bảng danh sách nhân sự. Sau khi chạy macro, bạn sẽ nhận được kết quả như hình dưới đây.

 

Hướng dẫn xóa dữ liệu Excel trong bảng danh sách bằng lệnh VBA

Nếu bạn nhìn thấy hộp thoại "Xóa dữ liệu thành công" hiện lên như trong hình nghĩa là chúng ta đã thực hiện được thao tác xóa dữ liệu trong bảng Excel rồi! Ngoài ra, VBA còn trợ giúp bạn xóa công thức mà vẫn giữ nguyên kết quả đó. Thật tuyệt phải không!

Tổng kết

Qua bài viết ngày hôm nay, chúng ta đã tìm hiểu thêm một thủ thuật VBA Excel hữu hiệu nữa. Các bạn hãy lưu lại cách xóa dữ liệu Excel bằng lệnh VBA này, vì chắc chắn sẽ có một lúc bạn cần dùng đến nó đấy. Để thu thập thêm nhiều mẹo hay về VBA cũng như Excel, bạn hãy tham khảo các bài viết về chủ đề này trên blog Gitiho và đăng kí khóa học Tuyệt đỉnh VBA với chúng mình nhé.

KHÓA HỌC EXCEL ONLINE HOÀN TOÀN MIỄN PHÍ

Khóa học với hơn 14000 HỌC VIÊN đang học và đánh giá trung bình 4.76 SAO

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông