Khi bạn bắt đầu một sổ làm việc mới, rất phổ biến là đặt tên cho mỗi trang tính sau một ngày khác nhau trong tháng. Nếu bạn làm điều này khá nhiều, bạn biết có thể hơi mệt mỏi khi đổi tên từng trang tính, riêng lẻ, thành chính xác những gì bạn cần.

Macro sau đây đã được phát triển để trợ giúp trong những trường hợp này. Nó kiểm tra tên của các trang tính trong sổ làm việc của bạn, đổi tên chúng thành các ngày trong tháng nếu chúng bắt đầu bằng các chữ cái “Trang tính”. Nếu không có đủ trang tính trong sổ làm việc, nó sẽ thêm các trang tính, nếu cần, cho mỗi ngày trong tháng.

Sub DoDays()

Dim J As Integer     Dim K As Integer     Dim sDay As String     Dim sTemp As String     Dim iTarget As Integer     Dim dBasis As Date

iTarget = 13     While (iTarget < 1) Or (iTarget > 12)

iTarget = Val(InputBox("Numeric month?"))

If iTarget = 0 Then Exit Sub     Wend

Application.ScreenUpdating = False     sTemp = Str(iTarget) & "/1/" & Year(Now())

dBasis = CDate(sTemp)

For J = 1 To 31         sDay = Format((dBasis + J - 1), "dddd mm-dd-yyyy")

If Month(dBasis + J - 1) = iTarget Then

If J <= Sheets.Count Then                 If Left(Sheets(J).Name, 5) = "Sheet" Then                     Sheets(J).Name = sDay                 Else                     Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay                 End If             Else                 Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay             End If         End If     Next J

For J = 1 To (Sheets.Count - 1)

For K = J + 1 To Sheets.Count             If Right(Sheets(J).Name, 10) > _               Right(Sheets(K).Name, 10) Then                 Sheets(K).Move Before:=Sheets(J)

End If         Next K     Next J

Sheets(1).Activate     Application.ScreenUpdating = True End Sub

Lưu ý rằng macro giả định rằng tháng mà bạn muốn trang tính là năm hiện tại. Nếu không phải như vậy, bạn sẽ cần thực hiện một thay đổi nhỏ. Lưu ý dòng sau gần đầu macro:

sTemp = Str(iTarget) & "/1/" & Year(Now())

Giả sử rằng bạn thực sự muốn tháng này là năm 2015 vì một số lý do. Chỉ cần thay đổi dòng thành sau:

sTemp = Str(iTarget) & "/1/2015"

Macro đặt mỗi tên tab bằng ngày trong tuần, sau đó là ngày thực tế, như trong “Thứ Tư, ngày 28 tháng 3 năm 2020”. Nếu bạn muốn thay đổi cách đặt tên các tab cho mỗi ngày, chỉ cần thay đổi cách biến sDay được tạo trong macro.

Bước cuối cùng trong macro là nó đặt các trang tính theo thứ tự thích hợp, dựa trên các ngày trong tháng. Kết quả là nếu bạn còn lại bất kỳ trang tính nào khác trong sổ làm việc (nói cách khác, bạn có một số trang tính không bắt đầu bằng các chữ cái “Trang tính”, thì các trang tính đó sẽ kết thúc ở cuối sổ làm việc, sau các trang tính cho mỗi ngày.

_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 is your nguồn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (11523) á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 phiên bản cũ hơn giao diện menu của Excel tại đây: