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 chỉ đị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?

Bạn có thể tải xuống Mẫu VBA Xóa Trang tính Excel này tại đây - Mẫu VBA Xóa Trang tính Excel

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 là “ 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 đến tên trang tính, chúng tôi không thấy 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 là " 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 ví dụ ở trên tại thời điểm chúng ta tham chiếu 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 nên 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 là “Bán hàng 2017”.

Bước 3: Bây giờ bằng cách sử dụng biến “ Ws ”, chúng ta có thể truy cập 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

Hiện tại, trang đang hoạt động là "Bán hàng 2017".

Nếu tôi chạy mã, nó sẽ xóa trang đ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 hoạt động tức là "Bán hàng 2016".

Như vậy, chúng ta có thể sử dụng đối tượng “Active Sheet” để xóa trang tính.

Lưu ý: Để sử dụng phương pháp này, chúng ta cần hoàn toàn chắc chắn về những gì chúng ta đang làm với Active Sheet và sheet nào sẽ là một sheet đang hoạt động.

Ví dụ # 4 - Xóa nhiều hơn một trang tính

Trong các ví dụ trên, chúng ta đã thấy cách xóa một trang tính nhưng điều gì sẽ xảy ra nếu chúng ta có nhiều trang tính, giả sử chúng ta muốn xóa 10 trang tính.

Chúng ta không thể tiếp tục viết 10 dòng mã để xóa trang tính, vì vậy chúng ta cần sử dụng các vòng lặp để lặp qua tập hợp các trang tính và xóa chúng.

Đoạn mã dưới đây sẽ lặp qua các trang tính và xóa tất cả các trang tính trong sổ làm việc.

Mã:

 Sub Delete_Example2 () Dim Ws As Worksheet cho mỗi W trong ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub 

Đoạn mã trên sẽ gây ra 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 đoạn 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 trang tính cụ thể nhưng để xóa tất cả các trang tính khác thì chúng ta có thể sử dụng mã bên dưới.

Mã:

 Sub Delete_Example2 () Dim Ws As Worksheet For Each Ws Trong ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Then '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 là “Bán hàng 2018”.


$config[zx-auto] not found$config[zx-overlay] not found