Michael có một macro in một số trang tính. Đôi khi một hoặc hai trong số các trang tính được in có thể không chứa dữ liệu. Anh ta đang tìm kiếm một kỹ thuật để kiểm tra xem một trang tính có chứa dữ liệu hay không, và sau đó chỉ in những trang tính đó.

Có một số cách bạn có thể thực hiện để kiểm tra một trang tính trống.

Tất nhiên, nó phụ thuộc vào những gì bạn thực sự có nghĩa là “trống rỗng”, ít nhất là ở một mức độ. Ví dụ: nếu một trang tính hoàn toàn không có gì trong đó — không có gì trong bất kỳ ô nào của trang tính — chúng ta có thể coi nó là trống.

Tuy nhiên, bạn có thể có một trang tính chứa một số tiêu đề cột mà bạn đã thêm, nhưng không có gì ngoại trừ những tiêu đề đó. Mặc dù Excel sẽ coi trang tính không trống, nhưng bạn có thể coi nó là trống cho mục đích in.

Có lẽ cách dễ nhất để kiểm tra xem trang tính có trống hay không là sử dụng đối tượng usedRange để xác định những gì có trong trang tính:

With ActiveSheet.UsedRange     IsSheetEmpty = .Rows.Count = 1 And _       .Columns.Count = 1 And _       .Cells(1,1) = ""

End With

Lưu ý rằng đối tượng usedRange bao gồm phạm vi ô được sử dụng trong trang tính. Do đó, nếu số hàng trong phạm vi này là 1 và số cột trong phạm vi này là 1 và không có gì trong ô đầu tiên của đối tượng usedRange, thì trang tính có thể trống.

Tùy thuộc vào đặc điểm dữ liệu của bạn, bạn có thể rút ngắn mã hơn nữa:

With ActiveSheet.UsedRange     IsSheetEmpty = .Count = 1 And .Cells(1,1) = ""

End With

Trong phiên bản này, bạn chỉ cần kiểm tra xem số lượng ô trong đối tượng usedRange là 1 và ô cụ thể đó có trống không.

Nếu bạn có một (hoặc hai) hàng tiêu đề trong trang tính của mình, thì bạn có thể điều chỉnh kỹ thuật này thành các hàng và cột bạn có trong các tiêu đề đó. Ví dụ: nếu bạn có tiêu đề trong phạm vi A1: F4, thì bạn có thể điều chỉnh kỹ thuật theo cách sau:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=4 _   AND ActiveSheet.UsedRange.Columns.Count=6

Bạn không cần phải kiểm tra nội dung của A1 trong trường hợp này vì bạn đã biết rằng nó (và một số ô khác) chứa thông tin — tiêu đề của bạn. Bạn chỉ muốn bỏ qua mọi thứ trong các tiêu đề đó để xác định xem có thông tin bổ sung trong trang tính hay không.

Nếu trang tính hoàn toàn trống (không có thông tin tiêu đề mà bạn đã thêm), bạn có thể sử dụng chức năng trang tính CountA để phân tích các ô trong trang tính. Nếu kết quả của hàm lớn hơn 0, thì trang tính không trống. Ví dụ, giả sử rằng trang tính bạn muốn phân tích được chỉ định bởi đối tượng sht. Bạn có thể sử dụng kỹ thuật này theo cách sau:

IsSheetEmpty = Application.WorksheetFunction.CountA(sht.Cells) = 0

Tất nhiên, một trang tính có thể chứa các mục khác ngoài thông tin trong ô. Nếu bạn nghi ngờ mình sẽ có những loại đối tượng này trong trang tính (những thứ như Tự động tạo hình, đồ họa hoặc biểu đồ nhúng), thì việc kiểm tra “tính trống rỗng” của bạn sẽ cần phải hoàn thiện hơn. Mỗi mục này được chứa trong các bộ sưu tập có thể truy cập được trong VBA và bạn có thể kiểm tra thuộc tính Đếm cho mỗi bộ sưu tập để xem nó có bằng 0 hay không.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (9637) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: