Excel vba xóa các hàng trong bảng với dữ liệu cụ thể

VBA Xóa hàng khỏi bảng trong Excel. Chúng tôi có thể Xóa hoặc xóa một Hàng hoặc nhiều Hàng khỏi Bảng ở bất kỳ vị trí nào. Các hàng đầu tiên mặc định đã bị xóa khỏi bảng. Trong hướng dẫn này, chúng tôi đã giải thích nhiều ví dụ với lời giải thích. Chúng tôi cũng hiển thị ảnh chụp màn hình đầu ra ví dụ. Chúng tôi đã chỉ định hai ví dụ trong hướng dẫn sau. Bạn có thể thay đổi tên bảng và trang tính theo yêu cầu của bạn. Chúng tôi cũng đã chỉ định hướng dẫn từng bước cách chạy mã macro VBA vào cuối phiên

Bảng định dạng

Cú pháp xóa hàng khỏi bảng bằng VBA trong Excel

Đây là cú pháp để Xóa hàng khỏi bảng trên trang tính bằng VBA trong Excel

ListRows(Number).Delete

Trong đó Number chứa kiểu dữ liệu số nguyên. Đó là một đối số bắt buộc. Đại diện cho số Hàng cần xóa

Ví dụ để xóa hàng đầu tiên khỏi bảng trên trang tính

Chúng ta hãy xem ví dụ để Xóa hàng khỏi bảng trên trang tính. Tên trang tính được xác định là 'Bảng'. Và chúng tôi sử dụng tên bảng là ‘MyTable1‘. Bạn có thể thay đổi hai cái này theo yêu cầu của bạn. Chúng ta Delete phương thức của đối tượng ListObject

 'VBA Delete the First Row from the Table
Sub VBAF1_Delete_First_Row_from_Table()
    
    'Declare Variables
    Dim oSheetName As Worksheet
    Dim sTableName As String
    Dim loTable As ListObject
    
    'Define Variable
    sTableName = "MyTable1"
    
    'Define WorkSheet object
    Set oSheetName = Sheets("Table")
    
    'Define Table Object
    Set loTable = oSheetName.ListObjects(sTableName)
        
    'Delete a Row from the table
    loTable.ListRows(1).Delete
    
    
End Sub

đầu ra. Đây là ảnh chụp màn hình đầu ra sau đây của mã VBA macro ví dụ ở trên

Excel vba xóa các hàng trong bảng với dữ liệu cụ thể

Loại bỏ Hàng thứ tư khỏi Bảng trên Trang tính

Chúng ta hãy xem ví dụ để xóa Hàng thứ tư khỏi bảng trên trang tính. Sự khác biệt giữa thủ tục trên và dưới là thay đổi trong Số hàng

'VBA Delete the Fourth Row from the Table
Sub VBAF1_Delete_Fourth_row_from_Table1()
    
    'Declare Variables
    Dim oSheetName As Worksheet
    Dim sTableName As String
    Dim loTable As ListObject
    
    'Define Variable
    sTableName = "MyTable1"
    
    'Define WorkSheet object
    Set oSheetName = Sheets("Table")
    
    'Define Table Object
    Set loTable = oSheetName.ListObjects(sTableName)
    
    'Delete fourth Row from the table
    loTable.ListRows(4).Delete
    
End Sub

Xóa nhiều hàng khỏi bảng trong Excel bằng VBA

Đây là một ví dụ khác để Xóa nhiều Hàng khỏi Bảng. Trong ví dụ này, chúng tôi xóa ba (3) Hàng khỏi bảng. Bạn có thể chỉ định số lượng Hàng trong vòng lặp for

Tôi đã được mời cộng tác trên một tệp Excel được sử dụng bởi tất cả các Thư ký Điểm danh Học sinh tại khuôn viên của chúng tôi. Đó là một tập tin mà tôi sử dụng trong công việc của tôi. Tôi rất vui khi có cơ hội cải thiện tiềm năng tệp được tạo ban đầu vào năm 2002. Tôi sẽ tập trung vào một phần nhỏ của toàn bộ dự án trong bài đăng này vì cuối cùng tôi đã sửa lại toàn bộ tệp

Mục đích

Tạo một phương pháp động để thu thập DeptID mà cuối cùng được sử dụng làm tiêu chí lọc

Excel vba xóa các hàng trong bảng với dữ liệu cụ thể
Một ví dụ về tính linh hoạt trong mã VBA được sử dụng để đáp ứng mục tiêu

Tôi muốn sử dụng một bảng Excel. Tôi nghĩ rằng họ thật tuyệt vời. Thật không may, không phải ai cũng biết cách sử dụng chúng. Vì vậy, tôi cần một cách để “tự động loại bỏ” những hàng không đáp ứng yêu cầu của tôi;

Thu thập tiêu chí DeptID – cách cũ

Không có gì sai với cách cũ. Mọi người đã quen với việc nhấp vào các nút tốt. Động lực của tôi để cải thiện quy trình này chỉ đơn giản là liệu tôi có thể làm tốt hơn không

Excel vba xóa các hàng trong bảng với dữ liệu cụ thể
Đối với mỗi mục nhập, bạn phải nhấp vào 'Thêm phòng', sau đó nhấp vào 'OK'

Thu thập tiêu chí DeptID – cách mới

Khi người dùng hiểu cách thức hoạt động của bảng Excel, thời lượng của quy trình sẽ giảm đi rất nhiều. Người dùng chỉ cần gõ ‘Enter’ sau mỗi DeptID

Excel vba xóa các hàng trong bảng với dữ liệu cụ thể
Thu thập dữ liệu đơn giản bằng Bảng Excel

Cũ vs. Mới

Cách cũ không cần xử lý hàng trống. Mỗi 'Add Depts' được kiểm soát nơi đặt DeptID bổ sung. Mỗi 'Delete Depts' đã chọn hàng sẽ bị xóa. Theo cách mới, có thể xảy ra các hàng trống vì tôi đã trao quyền tự do cho người dùng dưới dạng bảng Excel. Tôi cần viết VBA để sửa các hàng trống có thể tồn tại vì có khả năng người dùng sẽ không luôn nhớ 'Delete Table Row' khi xóa giá trị khỏi DeptID

Bảng Excel = ListObjects

LUÔN LUÔN đặt tên cho các bảng Excel của bạn. Chỉ cần có được trong thói quen đó

Excel vba xóa các hàng trong bảng với dữ liệu cụ thể
Công cụ bảng > Thiết kế > Thuộc tính > Tên bảng

Tôi đặt tên cho bảng này là _deptIDCriteria. Tiền tố của dấu gạch dưới dành cho một phần khác của toàn bộ dự án, tuy nhiên, nó hoạt động tốt cho phần tiếp theo nơi tôi hiển thị VBA

Public Sub deleteEmptyTableRows()

    Set deptCriteria = ThisWorkbook.Sheets("Sheet1").ListObjects("_deptIDCriteria")

    Dim i As Integer

    With deptCriteria
        For i = .ListRows.Count To 1 Step -1
            If Len(.ListRows(i).Range.Cells(1)) <= 3 Then
                If .ListRows.Count <= 1 Then
                    MsgBox ("You must enter at least 4 characters of the DeptID"), vbCritical
                    Exit Sub
                End If
                .ListRows(i).Delete
            End If
        Next i
    End With

End Sub

Tôi đã sửa đổi mã này từ mã thực tế mà tôi đã sử dụng trong dự án, tuy nhiên, nó cung cấp cho bạn khuôn khổ cho các hoạt động

Kết quả

NẾU đầu tiên thực sự xóa bất kỳ hàng nào có LEN của Ô nhỏ hơn 4; . Tôi đã chọn xóa các giá trị hàng này vì nó sẽ trả về quá nhiều bản ghi từ truy vấn mà nó thực sự lọc theo