Có thể có lúc bạn phải kiểm tra xem trang tính mà bạn đã tạo hoặc xóa trong sổ làm việc ở macro / mã VBA có tồn tại hay không. Chúng ta có thể làm điều này dễ dàng bằng cách sử dụng một hàm / macro. Có nhiều cách để kiểm tra xem một trang tính có tồn tại hay không.

Chúng tôi sẽ đề cập đến các cách sau trong bài viết này:

{trống} 1. Chức năng do người dùng xác định được gọi là UDF 2. Quy trình phụ thông qua hộp thông báo

Tùy chọn đầu tiên: Chức năng do người dùng xác định

Ảnh chụp nhanh sau chứa một vài tên trang tính và chúng tôi sẽ kiểm tra xem tên trang tính trong cột A có tồn tại hay không.

img1

Để tìm xem một trang tính cụ thể có tồn tại hay không, chúng ta cần làm theo các bước sau để khởi chạy trình soạn thảo VB Nhấp vào tab Nhà phát triển Từ nhóm Mã chọn Visual Basic

img2

  • Sao chép đoạn mã dưới đây trong mô-đun chuẩn

Option Explicit

Function WorksheetExists(ByVal WorksheetName As String) As Boolean

Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets

If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

WorksheetExists = True

Exit Function

End If

Next Sht

WorksheetExists = False

End Function

img3

Để kiểm tra, chúng ta sẽ sử dụng UDF trong ô B2 as = WorksheetExists (A2)

img4

  • Trong hình trên, “MasterSheet” không tồn tại trong sổ làm việc mẫu của chúng tôi; do đó, công thức đã đưa ra câu trả lời là Sai

Giải thích mã:

Hàm này nhận giá trị cho “WorksheetName” từ macro thực hiện các hoạt động khác. Nếu bạn cần thay đổi nó theo mã của bạn, bạn có thể.

Đối với mỗi Sht Trong ThisWorkbook.WorksheetsNext Sht lần lượt là phần bắt đầu và phần kết thúc của vòng lặp.

Sau đó If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then _ WorksheetExists = True_ Kiểm tra xem tên Trang tính có khớp với tên Trang tính được truyền từ macro chính hay không. Nếu đúng, WorksheetExists là True và chúng ta có thể thoát khỏi hàm. Nếu không, WorksheetExists = False được trả về macro chính. Vòng lặp đi từ trang đầu tiên sang trang tiếp theo cho đến khi tất cả các trang đã được kiểm tra.

SecondOption: Sub thường xuyên qua hộp tin nhắn

Chúng ta có thể có một chương trình con bình thường đang gọi một UDF và, nếu tìm thấy trang tính được chỉ định, hộp thông báo sẽ hiển thị, ‘trang tính tồn tại’; nếu không tìm thấy, hộp thư sẽ bật lên, “không tìm thấy trang tính”.

Để kiểm tra, chúng tôi sẽ sao chép đoạn mã sau trong mô-đun chuẩn:

Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean

If wb Is Nothing Then Set wb = ThisWorkbook

With wb

On Error Resume Next

WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName)

On Error GoTo 0

End With

End Function

Sub FindSheet()

If WorksheetExists2("Sheet1") Then

MsgBox "Sheet1 is in this workbook"

Else

MsgBox "Oops: Sheet does not exist"

End If

End Sub

img5

Sau khi chạy macro “FindSheet”, chúng ta sẽ nhận được hộp thông báo sau nếu trang tính tồn tại:

img6

Nếu Sheet không tồn tại, chúng ta sẽ nhận được hộp thông báo sau:

img7

Tương tự, chúng ta có thể có một vòng lặp IF đơn giản để kiểm tra xem trang tính có tồn tại hay không và thực hiện một số hành động sau đó.

Sub test()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.Name <> "Main" Then

ws.Range("A1").Value = ws.Name

Else

ws.Range("A1").Value = "MAIN LOGIN PAGE"

End If

Next ws

End Sub

img8

Để kiểm tra macro trên, chúng ta cần tạo một trang tính tên là “Main”. Macro này rất đơn giản Nó lặp qua từng trang tính trong sổ làm việc Sau đó, nó kiểm tra xem tên trang tính có phải là CHÍNH không Nếu là CHÍNH, nó sẽ hiển thị văn bản, chẳng hạn như “TRANG ĐĂNG NHẬP CHÍNH” trong A1 của trang tính đó, nếu không nó sẽ hiển thị tên của trang tính trong ô A1

img9

Đây chỉ là một cách khác để kiểm tra xem trang tính có tồn tại hay không. Nếu nó tồn tại, thực hiện hành động A, nếu không, hành động B Kết luận: * Chúng ta có thể xác định xem một trang tính có tồn tại trong sổ làm việc của chúng ta hay không; chúng ta có thể sử dụng UDF hoặc chương trình con tùy theo sự thuận tiện của chúng ta.

image 48

Nếu bạn thích blog của chúng tôi, hãy chia sẻ nó với bạn bè của bạn trên Facebook. Và bạn cũng có thể theo dõi chúng tôi trên Twitter và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện, bổ sung hoặc đổi mới công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi tại [email protected]