Nếu bạn đang làm việc trên một dự án sử dụng nhiều trang tính trong một sổ làm việc, bạn có thể muốn sắp xếp chúng theo tên trang tính. Macro ngắn sau đây sẽ thực hiện thủ thuật rất độc đáo:

Sub SortSheets()

Dim I As Integer, J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

Macro này hoạt động nếu bạn có số lượng trang tính tương đối thấp trong sổ làm việc của mình. Nếu, khi bạn chạy macro, bạn lưu ý rằng phải mất rất nhiều thời gian để chạy, bạn có thể muốn sử dụng thuật toán sắp xếp hiệu quả hơn trong macro. Ví dụ: sau đây là phiên bản đọc tên của tất cả các trang tính vào một mảng, sắp xếp mảng bằng thuật toán BubbleSort và sau đó sắp xếp thực tế:

Sub SortSheets()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer, Upper As Integer     Dim I As Integer, J As Integer, K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Bất cứ ai đã lập trình một thời gian đều biết rằng BubbleSort là một quy trình sắp xếp có mục đích chung tốt, nhưng có những quy trình nhanh hơn có sẵn.

Ví dụ: nếu bạn có khá nhiều trang tính và chúng bắt đầu rất vô tổ chức, bạn có thể thấy rằng thuật toán QuickSort có lợi hơn. Tất cả những gì bạn cần làm để thay đổi điều trên để sử dụng QuickSort là thêm thuật toán QuickSort làm chương trình con (bạn có thể tìm thuật toán trong bất kỳ cuốn sách lập trình Visual Basic hay nào) và sau đó gọi thủ tục từ bên trong macro SortSheets chính. (Điều này có nghĩa là thay đổi dòng mà BubbleSort bây giờ được gọi.)

Có một sự khác biệt giữa macro thứ hai này và macro đầu tiên. Macro đầu tiên không chú ý đến trường hợp của văn bản được sử dụng để đặt tên cho các trang tính của bạn. Do đó, Trang tính của Tôi sẽ được xem giống như Trang tính CÔNG VIỆC CỦA TÔI. Macro thứ hai chú ý đến trường hợp văn bản và sắp xếp tương ứng. Tất nhiên, đây không phải là một vấn đề đặc biệt lớn, vì Excel cũng không chú ý đến chữ hoa trong tên trang tính.

_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 (1959) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: