Nhờ viết code tách Sheets (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Em muốn khi đang đứng ở bảng tính hiện thời thì tách sheets ở bảng tính đó
+ Hiện form nhập số lượng tách thành bao nhiêu sheets
+ Vd: tách thành 10 sheets và đặt tên luôn cho Sheet lần lường KL1, KL2, KL3 ....
Em xin cảm ơn!
 

File đính kèm

Bạn chỉ cần record macro việc lập 1 sheet mới như thế nào, nghiên cứu code một chút với vòng lặp for là sẽ ra thôi.
 
Upvote 0
Sub Macro1()
Dim ShName As String
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
For i = 1 To 3
ShName = ("KL.D") & i
ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = ShName
Next i
End Sub
---------------
+ Mỗi lần chạy code là nó bị như hình ảnh dưới đây! phải sử lý như nào ạ!
+ Vòng for muốn chỉ định mỗi lần chạy nó sẽ hỏi muốn copy ra bao nhiêu sheet thì làm như nào ạ: em muốn dùng Form ở khâu này!

Untitled.png
 
Upvote 0
Sub Macro1()
Dim ShName As String
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
For i = 1 To 3
ShName = ("KL.D") & i
ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = ShName
Next i
End Sub
---------------
+ Mỗi lần chạy code là nó bị như hình ảnh dưới đây! phải sử lý như nào ạ!
+ Vòng for muốn chỉ định mỗi lần chạy nó sẽ hỏi muốn copy ra bao nhiêu sheet thì làm như nào ạ: em muốn dùng Form ở khâu này!

View attachment 183946
Do trong file của bạn có chứa name nên khi copy sheet nó hỏi bạn có muốn tạo name mới hay không? hay là sử dụng lại cái Name cũ, để khắc phục bạn có thể xóa name trước khi chạy code hoặc cho chạy code nhưng bỏ qua thông báo đó bằng cách dùng thử code này xem sao.
Mã:
Sub Macro1()
Dim ShName As String
Dim i As Long, NumSheet As Integer
Dim ws As Worksheet
NumSheet = Application.InputBox("Nh" & ChrW(7853) & "p s" & ChrW(7889) & " lý" & ChrW(7907) & "ng sheet c" & ChrW(7847) & "n copy.", "Nhap so!", , , , , , 1)
If NumSheet = 0 Then Exit Sub
    Application.DisplayAlerts = False
        Set ws = ActiveSheet
        ws.Activate
        For i = 1 To NumSheet
            ShName = ("KL.D") & i
            ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
            ActiveSheet.Name = ShName
        Next i
    Application.DisplayAlerts = True
End Sub
 
Upvote 0
Do trong file của bạn có chứa name nên khi copy sheet nó hỏi bạn có muốn tạo name mới hay không? hay là sử dụng lại cái Name cũ, để khắc phục bạn có thể xóa name trước khi chạy code hoặc cho chạy code nhưng bỏ qua thông báo đó bằng cách dùng thử code này xem sao.
Mã:
Sub Macro1()
Dim ShName As String
Dim i As Long, NumSheet As Integer
Dim ws As Worksheet
NumSheet = Application.InputBox("Nh" & ChrW(7853) & "p s" & ChrW(7889) & " lý" & ChrW(7907) & "ng sheet c" & ChrW(7847) & "n copy.", "Nhap so!", , , , , , 1)
If NumSheet = 0 Then Exit Sub
    Application.DisplayAlerts = False
        Set ws = ActiveSheet
        ws.Activate
        For i = 1 To NumSheet
            ShName = ("KL.D") & i
            ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
            ActiveSheet.Name = ShName
        Next i
    Application.DisplayAlerts = True
End Sub
ok đươc rồi anh ạ! file của em lúc copy ra bị Name rác. Code chạy êm mượt rồi. Em cảm ơn anh nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom