Tạo Nút Macro nhân bản Sheet và Tự động đổi tên sheet theo giá trị của 1 ô cố định trong sheet!

Liên hệ QC

ThuyNguyenHN

Thành viên hoạt động
Tham gia
24/6/09
Bài viết
159
Được thích
12
Em chào thầy cô và anh chị!
Em có 1 bài toán đã giải được 1/2, còn 1/2 xin được thầy cô và anh chị giúp ạ!

Bài toán yêu cầu:
1. Tạo 2 nút chức năng bằng Macro để khi nhấn vào thì 1 nút XÓA sẽ xóa dữ liệu cũ đi làm lại (phần này em đã làm được ạ)
2. Nút thứ 2 tên NHÂN SHEET MỚI khi nhấn vào thì sheet mới được tạo ra từ copy sheet hiện tại và sheet này đổi tên thành giá trị của ô B3 trong sheet đo đồng thời xóa hết 2 nút đi (Phần này em đã làm được copy ra sheet mới và xóa nút nhưng chưa biết cách tạo macro khi nhấn mà tến sheet đó tự đổi thành giá trị của ô B3 ạ)

Em có hình và file excel đính kèm, mong thầy cô và anh chị giúp em ạ!
Em cảm ơn thầy cô và anh chị!

(Em cảm ơn anh/chị ptm0412 đã nhắc nhở đăng bài nhầm khu vực ạ!)
1671068629238.png
 

File đính kèm

Lần chỉnh sửa cuối:
Thêm câu lệnh
ActiveSheet.Name = Sheets("TONG").Range("B3").Value

Tuy nhiên ghi nhớ là chỉ copy được 1 lần, lần sau phải sửa ô B3 thành tên khác rồi mới được nhấn nút tiếp. Bạn đang học cơ bản nên không hướng dẫn bắt lỗi, bạn nên hỏi thầy/ cô
 
Thêm câu lệnh
ActiveSheet.Name = Sheets("TONG").Range("B3").Value

Tuy nhiên ghi nhớ là chỉ copy được 1 lần, lần sau phải sửa ô B3 thành tên khác rồi mới được nhấn nút tiếp. Bạn đang học cơ bản nên không hướng dẫn bắt lỗi, bạn nên hỏi thầy/ cô
Dạ cảm ơn anh/chị ptm0412 nhiều ạ!
 
Hướng dẫn bạn tự làm thử nhé. Vừa làm vừa học:
1. Click phải chuột lên thanh Ribbon chọn Customize the Ribbon >> Cick chọn Tab Developer
Lưu ý: Bỏ qua bước này nếu đã có Tab Developer.
1671072377748.png
1671072389272.png
2. Bấm RecordMarco
1671072401540.png
Tự thực hiện những thao tác mà bạn đang kể bên trên.
1671072411568.png
Bấm Stop Recording.
Nhấn Alt + F11 để vào xem thử code và hiệu chỉnh lại.
-----------
Bạn cứ làm thử, sau cùng thì mới xem thử code sau.
PHP:
Sub CopySheets()
    'CopySheets Macro
    Dim shName      As String
    Dim i           As Long
    Dim shp         As Shape
    shName = Sheets("TONG").Range("B3").Value2
            For i = 1 To Sheets.Count
                If UCase(shName) = UCase(Sheets(i).Name) Then: MsgBox "SheetName: """ & shName & """ da ton tai": Exit Sub
            Next i
        Sheets("TONG").Copy After:=Sheets(Sheets.Count)
            With ActiveSheet
                .Name = shName
                For Each shp In .Shapes
                    If shp.Type <> msoChart And shp.Type <> msoComment Then: shp.Delete
                Next
            End With
End Sub
 
Một cách khác:
PHP:
Sub nhan_sheet_doi_ten()
If Not Evaluate("=ISREF('" & Range("B3").Value & "'!A1)") Then '  neu ten sheet chua co thi copy
    Sheets("TONG").Copy Before:=Sheets(1)
    With ActiveSheet
        .Name = .Range("B3")
        .Shapes.Range(Array("Rounded Rectangle 1")).Delete
        .Shapes.Range(Array("Rounded Rectangle 2")).Delete
        .Range("A1").Select
    End With
Else
    MsgBox "Ten sheet da ton tai!"
End If
End Sub
 
Web KT

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

Back
Top Bottom