Nếu bạn đang viết macro xử lý các trang tính khác nhau trong một sổ làm việc, bạn có thể cần phải tìm ra loại trang tính nào trong sổ làm việc, trước khi thực hiện bất kỳ quá trình xử lý nào. Điều này có thể đặc biệt quan trọng vì một số lệnh VBA chỉ hoạt động trên một số loại trang tính nhất định.

Trước khi bạn có thể tìm ra loại trang tính nào trong sổ làm việc, sẽ rất hữu ích nếu bạn biết cách Excel lưu trữ nội bộ một số đối tượng tạo nên sổ làm việc. Excel duy trì cả bộ sưu tập Trang tính và bộ sưu tập Biểu đồ. Bộ sưu tập Trang tính được tạo thành từ các đối tượng trang tính và bộ sưu tập Biểu đồ được tạo thành từ các đối tượng trang tính biểu đồ.

Đối tượng trang tính biểu đồ là những biểu đồ chiếm toàn bộ trang tính; nó không bao gồm những đối tượng được nhúng trong một trang tính.

Điều thú vị là, các đối tượng trang tính và trang biểu đồ cũng là thành viên của bộ sưu tập Trang tính. Vì vậy, nếu bạn muốn xử lý sổ làm việc theo thứ tự các trang tính xuất hiện, thì cách dễ nhất là thực hiện điều đó bằng cách xem qua bộ sưu tập Trang tính. Khi bạn làm như vậy, bạn có thể kiểm tra thuộc tính Type của các đối tượng riêng lẻ trong bộ sưu tập để xác định loại đối tượng đó là. Excel định nghĩa hai loại đối tượng có thể thuộc về bộ sưu tập Trang tính:

xlWorksheet. * Đây là một trang tính thông thường.

xlChart. * Đây là một biểu đồ.

Hai loại đối tượng sau đây vẫn được Microsoft Excel hỗ trợ, nhưng Microsoft khuyên bạn nên chuyển chúng sang phiên bản Microsoft VBA mới nhất. (Xem trang web được liệt kê bên dưới để biết thêm thông tin về cách làm việc với macro Excel 4.0.):

xlExcel4MacroSheet. * Đây là một trang tính macro, như được sử dụng trong Excel 4.0.

xlExcel4IntlMacroSheet. * Đây là một trang tính macro quốc tế, như được sử dụng trong Excel 4.0.

https://support.office.com/en-us/article/Working-with-Excel-4-0-macros-BA8924D4-E157-4BB2-8D76-2C07FF02E0B8

Bạn có thể bị cám dỗ khi nghĩ rằng nhìn vào danh sách các loại trang tính là đủ. Tuy nhiên, điều thú vị là Excel không phải lúc nào cũng trả về những gì bạn mong đợi cho thuộc tính Type. Thay vào đó, nếu bạn kiểm tra thuộc tính Type cho một biểu đồ, nó sẽ trả về một giá trị bằng xlExcel4MacroSheet.

Điều này có thể gây ra sự cố cho bất kỳ macro nào.

Sau đó, cách giải quyết vấn đề này là so sánh tên của từng mục trong bộ sưu tập Trang tính với tên trong bộ sưu tập Biểu đồ. Nếu tên nằm trong cả hai tập hợp, thì có thể an toàn khi cho rằng trang tính là biểu đồ. Nếu nó không có trong cả hai, thì bạn có thể phân tích thêm để xem trang tính có phải là một trong các loại khác hay không. Macro sau, SheetType, tuân theo chính xác quy trình này:

Sub SheetType()

Dim iCount As Integer     Dim iType As Integer     Dim sTemp As String     Dim oChart As Chart     Dim bFound As Boolean

sTemp = ""

For iCount = 1 To Sheets.Count         iType = Sheets(iCount).Type         sTemp = sTemp & Sheets(iCount).Name & " is a"



bFound = False         For Each oChart In Charts             If oChart.Name = Sheets(iCount).Name Then                 bFound = True             End If         Next oChart

If bFound Then             sTemp = sTemp & " chart sheet."

Else             Select Case iType                 Case xlWorksheet                     sTemp = sTemp & " worksheet."

Case xlChart                     sTemp = sTemp & " chart sheet."

Case xlExcel4MacroSheet                     sTemp = sTemp & "n Excel 4 macro sheet."

Case xlExcel4IntlMacroSheet                     sTemp = sTemp & "n Excel 4 international macro sheet"

Case Else                     sTemp = sTemp & "n unknown type of sheet."

End Select         End If         sTemp = sTemp & vbCrLf     Next iCount     MsgBox sTemp End Sub

Khi bạn chạy macro, bạn sẽ thấy một hộp thông báo hiển thị tên của mỗi trang tính trong sổ làm việc của bạn, cùng với loại trang tính đó là gì.

Cuối cùng, hãy nhớ rằng mã này cho bạn biết loại trang tính nào trong sổ làm việc; nó không cho bạn biết chúng được chứa trong loại sổ làm việc nào. (Nói cách khác, macro không quan tâm đến phiên bản Excel bạn đang làm việc.)

_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 (10483) á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: