VBA Xóa trang tính - Làm thế nào để Xóa Trang tính bằng Mã VBA?

Excel VBA Xóa trang tính

Để xóa trang tính trong VBA, chúng tôi sử dụng phương pháp Xóa trang tính. Để áp dụng phương pháp này trước tiên chúng ta cần xác định trang tính nào mình đang xóa bằng cách gọi tên trang tính. Chúng ta có hai phương thức để thực hiện tương tự, đầu tiên chúng ta viết trực tiếp sheet1.delete và phương thức thứ hai là sheet (sheet1) .delete.

Vì vậy, cú pháp sau.

Trang tính ("Tên trang tính"). Xóa

HOẶC LÀ

Trang tính ("Tên trang tính"). Xóa

Vì vậy, trước tiên, chúng ta cần xác định tên trang tính bằng cách sử dụng Đối tượng Trang tính hoặc Trang tính , sau đó, chúng ta có thể sử dụng phương pháp “Xóa” .

Làm thế nào để Xóa Trang tính Excel bằng Mã VBA?

Ví dụ # 1 - Xóa Trang tính bằng cách sử dụng Tên của nó

Giả sử bạn có nhiều trang tính và để xóa trang tính cụ thể, chúng ta cần đề cập đến trang tính theo tên của nó. Ví dụ: tôi có 3 trang tính khác nhau có tên là “Bán hàng 2016”, “Bán hàng 2017” và “Bán hàng 2018”.

Nếu tôi muốn xóa trang tính có tên " Bán hàng 2017 " , thì tôi phải đề cập đến tên trang tính như bên dưới.

Mã:

Sub Delete_Example1 () Worksheets ("sheet 2017"). Kết thúc Sub

Vấn đề với việc đề cập trực tiếp tên trang tính, chúng tôi không thể xem danh sách IntelliSense của VBA. Dù sao cũng đề cập đến phương pháp là “ Xóa”.

Mã:

Sub Delete_Example1 () Worksheets ("sheet 2017"). Xóa End Sub

Vì vậy, điều này sẽ xóa trang tính có tên " Bán hàng 2017 ".

Lỗi khi xóa trang tính: Nếu chúng tôi cố gắng xóa trang tính không tồn tại hoặc nếu chúng tôi đề cập sai tên trang tính, thì chúng tôi sẽ nhận được lỗi VBA là "Chỉ số phụ nằm ngoài phạm vi."

Ở trên, tôi gặp lỗi “Chỉ số nằm ngoài phạm vi” vì trong sổ làm việc của tôi không có tên trang tính nào được gọi là “Bán hàng 2017”.

Ví dụ # 2 - Xóa trang tính theo tên của nó với các biến

Như chúng ta đã thấy trong ví dụ trên, tại thời điểm chúng ta tham chiếu đến tên trang tính bằng cách sử dụng đối tượng Worksheets, chúng ta sẽ không thấy danh sách IntelliSense. Để xem danh sách IntelliSense, chúng ta cần sử dụng các biến.

Bước 1: Đầu tiên, khai báo biến là Worksheet .

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet End Sub

Bước 2: Vì trang tính là một biến đối tượng, chúng ta cần đặt biến cho trang tính cụ thể bằng cách sử dụng từ “ SET ”.

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Bán hàng 2017") Kết thúc Sub

Bây giờ, biến “Ws” đề cập đến bảng tính có tên “Doanh số năm 2017”.

Bước 3: Bây giờ, sử dụng biến “ Ws, chúng ta có thể truy cập vào tất cả danh sách IntelliSense của trang tính.

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Bán hàng 2017") Ws. Kết thúc Sub

Bước 4: Từ danh sách IntelliSense, chọn phương pháp “ Xóa ”.

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Bán hàng 2017") Ws.Delete End Sub

Như vậy bằng cách sử dụng các biến, chúng ta có thể truy cập danh sách IntelliSense.

Ví dụ # 3 - Xóa Trang tính Hoạt động

Active Sheet không là gì ngoài bất kỳ trang tính nào đang hoạt động hoặc được chọn vào lúc này. Đối với phương pháp này, chúng tôi không cần đề cập đến tên trang tính. Ví dụ, hãy xem mã VBA bên dưới.

ActiveSheet.Delete

Ngay bây giờ, trang tính đang hoạt động là "Bán hàng 2017".

Nếu tôi chạy mã, nó sẽ xóa trang tính đang hoạt động, tức là "Bán hàng 2017".

Bây giờ tôi sẽ chọn “Bán hàng 2016”.

Bây giờ nó sẽ xóa trang tính đang hoạt động, tức là "Bán hàng 2016".

Like this, we can use the “Active Sheet” object to delete the worksheet.

Note: To use this method, we need to absolutely sure of what we are doing with the Active Sheet and which sheet is going to be an active sheet.

Example #4 - Delete More than One Worksheet

In our above examples, we have seen how to delete a single sheet, but what if we have multiple worksheets? Let’s say we want to delete 10 worksheets.

We cannot keep writing 10 lines of code to delete the worksheet, so we need to use loops to loop through the collection of worksheets and delete them.

The below code will loop through the worksheets and delete all the worksheets in the workbook.

Code:

Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub

Đoạn mã trên sẽ gặp lỗi vì nó cố gắng xóa tất cả các trang tính trong sổ làm việc. Vì vậy, để tránh điều này, chúng ta cần giữ lại ít nhất một trang tính.

Nếu chúng ta muốn xóa tất cả các trang tính ngoại trừ trang tính đang hoạt động, thì chúng ta cần sử dụng mã dưới đây.

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet cho mỗi Ws Trong ActiveWorkbook.Worksheets If ActiveSheet.Name Ws.Name Then Ws.Delete End If Next Ws End Sub

Tương tự, nếu chúng ta không muốn xóa một trang tính cụ thể mà muốn xóa tất cả các trang tính khác, thì chúng ta có thể sử dụng đoạn mã dưới đây.

Mã:

Sub Delete_Example2 () Dim Ws As Worksheet Cho Mỗi W trong ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Sau đó 'Bạn có thể thay đổi tên trang tính Ws.Delete End If Next Ws End Sub

Đoạn mã trên sẽ xóa tất cả các trang tính ngoại trừ trang tính có tên “Bán hàng 2018”.

thú vị bài viết...