Giúp mình viết macro tạo sheet mới có điều kiện!

Liên hệ QC

laydaihiep

Thành viên mới
Tham gia
16/1/12
Bài viết
39
Được thích
0
Mình có 1 sheet danh mục chứa các ô dữ liệu cần thiết
B1: Chọn [A10:An]
B2: Tạo 1 sheet mới với điều kiện
Nếu giá trị: A 10.Offset(, 1).Value[chính là B10]=1 ; sheet mới = copy sheet NB01
tên sheet mới=giá trị A 10, tương tự
A 11.Offset(, 1).Value=2; sheet mới = copy sheet YC01
tên sheet mới=giá trị A 11
A 12.Offset(, 1).Value=3; sheet mới = copy sheet CV01
tên sheet mới=giá trị A 12

Với nội dung sheet NB01, YC01, CV01 đã có sẵn.
có file đính kèm, mong các bạn giúp, mình đang cần nó để hoàn thiện macro làm hồ sơ thanh toán.
 

File đính kèm

  • congviec.xlsx
    72.3 KB · Đọc: 25
Mình có 1 sheet danh mục chứa các ô dữ liệu cần thiết
B1: Chọn [A10:An]
B2: Tạo 1 sheet mới với điều kiện
Nếu giá trị: A 10.Offset(, 1).Value[chính là B10]=1 ; sheet mới = copy sheet NB01
tên sheet mới=giá trị A 10, tương tự
A 11.Offset(, 1).Value=2; sheet mới = copy sheet YC01
tên sheet mới=giá trị A 11
A 12.Offset(, 1).Value=3; sheet mới = copy sheet CV01
tên sheet mới=giá trị A 12

Với nội dung sheet NB01, YC01, CV01 đã có sẵn.
có file đính kèm, mong các bạn giúp, mình đang cần nó để hoàn thiện macro làm hồ sơ thanh toán.

có khác cái này không?
http://www.giaiphapexcel.com/forum/showthread.php?106206-Giúp-mình-viết-macro-này-với!
============
cái này xài mail merge chắc hay hơn
 
Lần chỉnh sửa cuối:
Upvote 0
Khác mà bạn, cái này tạo ra sheet có điều kiện, có 3 sheet có nội dung khác nhau tương ứng với giá trị tại ô B10, B11...[1,2,3]
còn theo Link bạn nói thì tạo ra 1 sheet có nội dung như nhau.
Bạn giúp mình với!
 
Upvote 0
Khác mà bạn, cái này tạo ra sheet có điều kiện, có 3 sheet có nội dung khác nhau tương ứng với giá trị tại ô B10, B11...[1,2,3]
còn theo Link bạn nói thì tạo ra 1 sheet có nội dung như nhau.
Bạn giúp mình với!

Do không có rảnh để giúp, vì vậy bạn có thể tham khảo File nó tương tự như cái bạn cần.

Tại G4 của sheet PHIEU CHUYEN TTDC bạn thay đổi số thứ tự như sheet DS VP thì sẽ được kết quả của mỗi phiếu. File đính kèm:
 

File đính kèm

  • Phiếu chuyển TT địa chính.rar
    15.9 KB · Đọc: 10
Upvote 0
Mình đã tải về rồi nhưng mà không hiểu, cái mình cần làm là nội dung mình đã nhờ ở trên cùng, bạn đọc kỹ cái này giúp mình đi.Mình có 1 sheet danh mục chứa các ô dữ liệu cần thiết
B1: Chọn [A10:An]
B2: Tạo 1 sheet mới với điều kiện
Nếu giá trị: A 10.Offset(, 1).Value[chính là B10]=1 ; sheet mới = copy sheet NB01
tên sheet mới=giá trị A 10, tương tự
A 11.Offset(, 1).Value=2; sheet mới = copy sheet YC01
tên sheet mới=giá trị A 11
A 12.Offset(, 1).Value=3; sheet mới = copy sheet CV01
tên sheet mới=giá trị A 12
 
Upvote 0
File của bạn có nhiều name trùng tên, bạn cần sửa trước đã, ngoài ra các sheet NB01, CV01 đặt như vậy sẽ bị trùng tên khi tạo sheet mới.
 
Upvote 0
Các name trùng nhau đó không quan trọng đâu bạn, còn khi tạo ra các sheet mới các tên tương ứng ở cột A, các tên này khác nhau mà bạn.
Cái mình cần là tại cột B có ký hiệu giá trị tại ô là 1,2,3, Với ký hiệu 1 thì tạo ra sheet mới với nội dung của sheet NB01 [copy NB01], và đặt tên ở cột A cùng dòng. tương tự Với ký hiệu 2 thì tạo ra sheet mới với nội dung của sheet YC01 [copy YC01] và đặt tên ở cột A cùng dòng, Với ký hiệu 3 thì tạo ra sheet mới với nội dung của sheet CV01 [copy CV01] và đặt tên ở cột A cùng dòng.
Mong bạn giúp mình với!
 
Upvote 0
Name trùng nhau thì khi tạo sheet sẽ xuất hiện hộp thoại name conflict. Còn tên NB01 trùng với A10 nên copy sẽ tạo ra sheet NB01(1)
 
Upvote 0
Mình mới học VBA, hôm trước được giúp đỡ nên mình có được đoạn macro này, mình có thêm đoạn code giữa theo nội dung mình cần giúp đở nhưng mà không hiểu cấu trúc của nó, bạn sửa giúp mình nha.
Sub laydaihiep()
Dim wsNew As Worksheet, wsMain As Worksheet
Dim list_of_existing As String, Target As Range


Set wsMain = Sheets("Danh muc")
For Each Target In wsMain.Range([A10], [A60000].End(3))
If Not IsEmpty(Target) Then
On Error Resume Next
Set wsNew = ThisWorkbook.Sheets(Target.Value)
On Error GoTo 0
If Not wsNew Is Nothing Then
list_of_existing = list_of_existing & vbCrLf & Target.Value
Đoạn code mình thêm
If wsMain.Range(Target.Address).Offset(, 1).Value = 1 Then
Else
ThisWorkbook.Sheets("NB01").Copy _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Sheets(ThisWorkbook.Sheets.Count)
.Name = Target.Value
End With
End If
If wsMain.Range(Target.Address).Offset(, 1).Value = 2 Then
Else
ThisWorkbook.Sheets("YC01").Copy _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Sheets(ThisWorkbook.Sheets.Count)
.Name = Target.Value
End With

End If
If wsMain.Range(Target.Address).Offset(, 1).Value = 1 Then
Else
ThisWorkbook.Sheets("CV01").Copy _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Sheets(ThisWorkbook.Sheets.Count)
.Name = Target.Value
End With
kết thúc đoạn code mình thêm
End If
Set wsNew = Nothing
End If
Next Target
Set wsMain = Nothing
If Len(list_of_existing) > 0 Then
MsgBox "Cap nhat cac sheet moi da thanh cong !"
End If
End Sub


Mong bạn đừng cười, giúp mình với
 
Upvote 0
Code của mình, chạy tốt khi đã xóa name trùng.
Mã:
Sub TaoSheet()
    Dim n&, i&
    Application.ScreenUpdating = False
    With Sheet1
        n = .Range("A1000").End(xlUp).Row
        For i = 10 To n
            Sheets(.Cells(i, 2) + 1).Copy after:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = .Cells(i, 1)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Name trùng nhau thì khi tạo sheet sẽ xuất hiện hộp thoại name conflict. Còn tên NB01 trùng với A10 nên copy sẽ tạo ra sheet NB01(1)
Thế mình đổi tên các sheet góc thành NB, YC, CV thì khi tạo các sheet mới đặt tên theo cột A (từ A10 đến A100...) thì ko trùng tên nữa.
 
Upvote 0
Xóa những file vừa tôi vừa tạo ra sau đó vào sheet New_Sheet click nút New_Sheet để tao sheet
 

File đính kèm

  • GPEX.xlsm
    257 KB · Đọc: 5
Upvote 0
Web KT
Back
Top Bottom