Đổi tên Sheet hàng loạt.

Liên hệ QC

chuot0106

Thành viên gắn bó
Tham gia
20/1/13
Bài viết
2,567
Được thích
1,670
Em mới học VBA và tập viết đoạn code đổi tên sheet hàng loạt như sau, em định đặt tên sheet theo số. Không biết em sai gì mà code báo lỗi ạ.
Public Sub dat_ten_sheet()
Dim i As Long, ws As Worksheet
For Each ws In Worksheets
For i = 1 To Worksheets.Count
ws.Name = i
Next i
Next ws
End Sub
 
Em mới học VBA và tập viết đoạn code đổi tên sheet hàng loạt như sau, em định đặt tên sheet theo số. Không biết em sai gì mà code báo lỗi ạ.
Bạn sử dụng 2 vòng For như vậy sẽ xảy ra trường hợp thế này: Giả sử file có 10 sheet, sau bước thứ nhất của vòng For ngoài thì sheet đầu tiên sẽ có tên là 10. Sang bước thứ 2 của vòng For này, sheet thứ 2 cũng sẽ được đặt tên là 10. Vậy là 2 sheet trùng tên.
Bạn sửa code thành như thế này:
[GPECODE=vb]Sub Dat_Ten_Sheet()
Dim i As Long
On Error Resume Next
For i = 1 To Worksheets.Count
Sheets(i).Name = i
Next
End Sub[/GPECODE]
Code trên vẫn gặp vấn đề tên sheet sẽ không được đặt như ý nếu tên sheet (1, 2, 3,...) đã tồn tại trước đó.
 
Upvote 0
Em mới học VBA và tập viết đoạn code đổi tên sheet hàng loạt như sau, em định đặt tên sheet theo số. Không biết em sai gì mà code báo lỗi ạ.
Code của bạn thì sheet nào cũng có tên = Worksheets.Count
Thử như vầy coi còn lỗi không:
[GPECODE=vb]Public Sub dat_ten_sheet()Dim i As Long
For i = 1 To Worksheets.Count
Worksheets(i).Name = i
Next i
End Sub
[/GPECODE]
hoặc như thế này:
[GPECODE=vb]Public Sub dat_ten_sheet()
Dim I As Long, Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
I = I + 1
Ws.Name = I
Next Ws
End Sub[/GPECODE]
------------
Nếu có lỗi xảy ra thì xem bài #2.
Ẹc..
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Thầy Bate và anh Nghiaphuc ạ. Em hỏi thêm một chút nữa ạ, em muốn đặt tên sheet gồm cả số và chữ thì phải sửa ra sao ạ?
Ví dụ: Thang1(Tháng 1), Thang2, Thang3...Hoặc Thang 1, Thang 2, Thang 3, ...(có dấu cách).
 
Upvote 0
...........
hoặc như thế này:
[GPECODE=vb]Public Sub dat_ten_sheet()
Dim I As Long, Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
I = I + 1
Ws.Name = I
Next Ws
End Sub[/GPECODE]
------------
Nếu có lỗi xảy ra thì xem bài #2.
Ẹc..
Khỏi cần biến i đi bác Ba Tê, mình có thể sử dụng Ws.Index cũng được.
Cảm ơn Thầy Bate và anh Nghiaphuc ạ. Em hỏi thêm một chút nữa ạ, em muốn đặt tên sheet gồm cả số và chữ thì phải sửa ra sao ạ?
Ví dụ: Thang1(Tháng 1), Thang2, Thang3...Hoặc Thang 1, Thang 2, Thang 3, ...(có dấu cách).
Vụ này thì dễ ẹc chứ khó gì nhỉ? Bạn biết toán tử & dùng để nối chuỗi chứ?
 
Upvote 0
Khỏi cần biến i đi bác Ba Tê, mình có thể sử dụng Ws.Index cũng được.

Vụ này thì dễ ẹc chứ khó gì nhỉ? Bạn biết toán tử & dùng để nối chuỗi chứ?
Làm theo gợi ý của anh! Mượn code của anh luôn.
Sub dat_ten_sheet1()
Dim I As Long
On Error Resume Next
For I = 1 To Worksheets.Count
Sheets(I).Name = "Thang" & I
Next
End Sub
Mượn code của thầy Bate.
Public Sub dat_ten_sheet()
Dim I As Long, Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
I = I + 1
Ws.Name = "Cam on thay" & I
Next Ws
End Sub
Em đã hiểu được lỗi mình sai ở đâu rồi cảm ơn Thầy Bate và anh Nghiaphuc 1 lần nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi, Các Anh

Các Anh hổ trợ giúp:
1- Em muốn thêm nhiều sheet nhân viên -> có cách nào để tạo 1 danh sách khi mình nhập tên thì nó nhảy ra sheet luôn không ạ
2-Có cách nào đổi tên nhân viên các Sheet nhanh hơn thay vì vào từng sheet để rename không ạk

Em trân trọng cảm ơn
Phuong
 

File đính kèm

  • Skill Matrix.xlsx
    242.1 KB · Đọc: 35
Upvote 0
Dear anh, chi

Em có 1 folder file excel, trong mỗi file có 1 sheet. Em muốn đổi tên Sheet các file cùng 1 lúc.

Từ "Ordproces_GSK_CG" => "Sheet2"

Anh chị giúp em với ạ.

Đây là hình ảnh folder của em, file ví dụ đính kèm bài viết ạ.

1621263140360.png
 

File đính kèm

  • Actual 01.09.2020.xls
    64 KB · Đọc: 1
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom