Trước tiên bạn phải lấy tất cả các tên sheet có chứa trong workbook đó bằng code sau:Tôi muốn tìm kiếm và thay thế trng một loạt tên sheet trong cùng worksheet, nên làm thế nà?
Sub LayTenSheet()
Columns(1).Insert
For i = 1 To Sheets.Count
Cells(i, 1) = Sheets(i).Name
Next i
End Sub
Sub DoiTenSheet()
On Error Resume Next
For i = 2 To Worksheets.Count
Sheets(i).Name = Sheets(1).Cells(i, 1).Value
Next i
End Sub
Thử file này xem (Dùng Form cho tiện thao tác)Tôi muốn tìm kiếm và thay thế trng một loạt tên sheet trong cùng worksheet, nên làm thế nà?
Public Dic
Sub ShowForm()
UserForm1.Show
End Sub
Sub UpdateList()
Dim Sh As Worksheet
Set Dic = CreateObject("Scripting.Dictionary")
For Each Sh In ThisWorkbook.Worksheets
Dic.Add Sh.Name, ""
Next Sh
End Sub
Private Sub UserForm_Initialize()
Dim Sh As Worksheet
UpdateList
ComboBox1.List = Dic.Keys
End Sub
Private Sub CommandButton1_Click()
On Error Resume Next
With ComboBox1
Sheets(.Value).Name = TextBox1.Value
.RemoveItem (0)
UpdateList
.List = Dic.Keys
.Value = TextBox1.Value
End With
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
End Sub
Thế lại càng dể, bạn thử code này:Tôi có thử thành công cái Form_RenameSheet nhưng có vẻ là thay đổi tên cho từng sheet chứ không phải một loạt các sheet.
Thế này nhé, tôi có các sheet có tên là: shee1,sheet2, sheet3,...sheet40 trong cùng một worksheet. Nay tôi muốn cùng lúc đổi tên chúng thành: shat1, shat2, shat3,...shat40.
Nghĩa là tôi sẽ tìm trong tên các sheet chữ "ee" để đổi thành "a". Tôi nên làm thế nào?
Sub ReNameSheet()
Dim Sh As Worksheet
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
Sh.Name = Replace(Sh.Name, "Sheet", "Shat")
Next Sh
End Sub
Như vậy chỉ có cách là tạo danh sách tên sheet, thay đổi sheet theo ý bạn rồi chạy codeCách này e có chỗ không tiện.
Ví dụ sau khi tôi đã đổ tên các Sheet1, Sheet2, Sheet3,...Sheet40 thành Shat1, Shat2, Shat3,...Shat40 tôi lại muốn đổi riêng tên Shat3 và Shat30 thành Sheet3 và Sheet30 tôi lại phải chỉnh code lại à?
Như vậy, không chỉ đổi hàng loạt tên một lần mà còn có thể tìm và đổi nhiều lần nữa, phải nên thế nào?
Cũng chưa chắc đã được! Vì ta sẽ "nói" thế nào để code nó hiểu rằng ta muốn đổi tên Sheet01, Sheet02... Sheet20 thành A01T, A02T,..., A20TNhư vậy chỉ có cách là tạo danh sách tên sheet, thay đổi sheet theo ý bạn rồi chạy code
Được chứ thầy, bài số #2 em đã làm. Trước tiên lấy danh sách sheet vào cột A, những Cell ở cột A này nếu muốn thay đổi cell nào thì gõ thẳng trên đó chạy code đổi tên sheet thì OKCũng chưa chắc đã được! Vì ta sẽ "nói" thế nào để code nó hiểu rằng ta muốn đổi tên Sheet01, Sheet02... Sheet20 thành A01T, A02T,..., A20T
Thì đàng nào cũng phải tốn công "gõ" chứ TỰ ĐỘNG gì đâu chứ ---> Bạn chọn cell rồi sửa Value, tôi chọn trực tiếp sheet rồi đổi tên, so sánh 2 thao tác này cũng chẳng nhanh chậm hơn bao nhiêu đâu... Và tốc độ càng gần bằng nhau nếu như bạn không có điều kiện kéo FillĐược chứ thầy, bài số #2 em đã làm. Trước tiên lấy danh sách sheet vào cột A, những Cell ở cột A này nếu muốn thay đổi cell nào thì gõ thẳng trên đó chạy code đổi tên sheet thì OK
Tự động nghĩa là gần giống như đổi tên file hàng loạt trong Windows ấy