Đổi tên sheet macro sai ở chỗ nào?

  • Thread starter Thread starter salam
  • Ngày gửi Ngày gửi
Liên hệ QC

salam

Thành viên gắn bó
Tham gia
4/11/06
Bài viết
1,945
Được thích
1,896
Giới tính
Nam
Nghề nghiệp
Accountant
Em muốn đổi tên sheet từ sheet1:Sheet20 theo Mảng A1:A20 ở sheet30 em viết như dưới nhưng không được. Nhờ các bác xem giúp với.

Sub doitensheets()
Rng = Array("A1:A20")
For i = 0 To 19
Sheets(i + 1).Name = Range(Rng(i)).Value
Next i
End Sub
 
Bạn thử code sau xem.
Mã:
Sub doitensheets()
For i = 1 To 20
    Sheets(i).Name = Sheet1.Cells(i, 1).Value
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Giã sử tại Sheet13 ta có dử liệu sau:
A1= Tuan01, A2 = Tuan02... vân vân đến A10 = Tuan10
Vậy ta sẽ có sub:
PHP:
Sub doitensheets()
    For i = 1 To 10
        sht = Range("Sheet13!A" & i).Value
        Application.Sheets(i).Name = sht
    Next i
End Sub
 
Upvote 0
Code của bạn Minhlev sao nó báo lỗi nhỉ? Sai chổ nào? Hay tôi nhầm chổ nào?
 
Upvote 0
anhtuan1066 đã viết:
Code của bạn Minhlev sao nó báo lỗi nhỉ? Sai chổ nào? Hay tôi nhầm chổ nào?
Bác ơi, file của bác phải có từ 20 sheet trở lên ạ. Nếu không thì báo lỗi đấy. Lý do là
Mã:
[COLOR=black]....[/COLOR]
[B][COLOR=red]For i = 1 To 20[/COLOR][/B][COLOR=red]
[B] Sheets(i).Name[/B][/COLOR] = Sheet1.Cells(i, 1).Value
Next i
....
Hoặc cũng có thể là trong các Cell thuộc vòng lặp có cell không có ký tự.
 
Lần chỉnh sửa cuối:
Upvote 0
Ko đâu... Vụ này tôi biết mà... Tôi thử với 10 Sheet tất nhiên là tôi phải ghi For i = 1 to 10 rồi...
Lỗi Run Time Error 104
dòng: Sheets(i).Name = Sheet1.Cells(i, 1).Value
Bạn thử lại lần nữa xem
 
Upvote 0
Em thử kỹ rồi mà. Bác xem có phải thuộc trường hợp 2 là có 1 cell không có ký tự (hoặc ký tự trống) không?
 
Upvote 0
Ối trời ơi, của bạn sai chổ:
Sheets(i).Name = Sheet1.Cells(i, 1).Value
Lý ra phải:
Sheets(i).Name = Sheet13.Cells(i, 1).Value
Tôi cũng sơ ý quá.. ko nhìn kỹ, tại dử liệu của tôi nằm trong Sheet13.. hi.. hi...
 
Upvote 0
Em cũng thử cho chạy trong nhiều trường hợp khác nhau (để code trong sheet, module; cho i chạy từ 1, 2) mà không thấy báo lỗi gì cả.
 
Upvote 0
Bác thử lại code sau xem có được không ạ.
Mã:
[LEFT]Sub doitensheets()
For i = 1 To 20
    If sheet1.cells(i,1)<>"" Then Sheets(i).Name = Sheet1.Cells(i, 1).Value
Next i
End Sub
[/LEFT]
 
Upvote 0
Xem ra trong trường hợp này đặt sht = Range("Sheet13!A" & i).Value là chắc ăn nhất .. he.. he..
 
Upvote 0
anhtuan1066 đã viết:
Giã sử tại Sheet13 ta có dử liệu sau:
A1= Tuan01, A2 = Tuan02... vân vân đến A10 = Tuan10
Vậy ta sẽ có sub:
PHP:
Sub doitensheets()
    For i = 1 To 10
        sht = Range("Sheet13!A" & i).Value
        Application.Sheets(i).Name = sht
    Next i
End Sub
Nếu tên sheet bắt đầu từ A3 thì làm thế nào các bác chỉ luôn cho em với. (Em muốn thay từ Sheet1 chở về sau và theo A3->A22).
Cám ơn các bác nhé. Em mới học món VBA nền cần giúp đỡ rất nhiều mong các bác chỉ bảo. Có câu hỏi nào ngớ ngẩn các bác bỏ qua cho em.
 
Upvote 0
Mọi người cho hỏi làm thế nào để đếm xem có bao nhiếu Sheets được nhỉ?? Và muốn liệt kê, sắp xếp tên các sheets thành một bảng dữ liệu thì làm thế nào??
 
Upvote 0
Để cho tổng quát thì nên đặt code như sau:
Mã:
Sub doitensheets()
Dim Ws as Worksheet
Set Ws = Sheet1
For i = 1 To 20
      If ws.cells(i,1)<>"" Then Sheets(i).Name = ws.Cells(i, 1).Value
Next i
End Sub
Sau này nếu cần thay đổi Sheet thì chỉ thay đổi gán giá trị cho Ws là được.​
 
Upvote 0
Đó là code:
Sheets.Count
Cũng với file ở trên bạn thêm code nữa, tại cell B1 của Sheet 13 sẽ đếm bao nhiêu sheet:
PHP:
Sub DoitenvaDem()
    For i = 1 To 12
        sht = Range("Sheet13!A" & i + 2).Value
        Application.Sheets(i).Name = sht
    Next i
    Range("Sheet13!B1").Value = Sheets.Count
End Sub
 
Upvote 0
To salam:
anhtuan đổi tên sheet từ 1 đến 12 còn sheet13 để riêng không đụng đến. Bài toán của bạn có đến 20 sheet nếu bạn đổi tên tất cả trong đó có cả sheet chứa name thì nó sẽ báo lỗi ở dòng lệnh:
PHP:
sht = Range("Sheet13!A" & i).Value
Theo mình bạn nên sử dụng code của minhlev, đơn giản và hiệu quả!
 
Upvote 0
anhtuan1066 đã viết:
Báo lỗi có lẽ do bạn chưa dời dử liệu sang A3 (từ A3 đến A22)
Cám ơn bác nhé không phải thế mà là nó không đổi sheet trùng tên vì em thử vài code nên nó thế em sửa tên sheet rồi.
Cám ơn các bác nhé!
 
Upvote 0
Web KT

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

Back
Top Bottom