Tạo sheet mới

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
Bạn "Let'GâuGâu" đã giúp mình: https://www.giaiphapexcel.com/diendan/threads/giúp-mình-viết-macro-này-với.106206/#post-660559

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
Else
ThisWorkbook.Sheets("(1÷15)D1m").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Sheets(ThisWorkbook.Sheets.Count)
.Name = Target.Value
.[e12] = wsMain.Range(Target.Address).Offset(, 3).Value
End With
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
Nhưng mình cần chỉnh sửa đoạn code tạo sheet trong vùng chọn ở trên từ U10-V10, U10 và V10 mình chọn bất kỳ. Bác pro nào giúp mình với. Thank!
 

File đính kèm

  • congviec.xlsx
    11.7 KB · Đọc: 9
Vì khó hiểu code nên:
Đoán đại, thử thay
Mã:
For Each Target In wsMain.Range([A10], [A60000].End(3))
thành
Mã:
For Each Target In wsMain.Range("U10:V10")
 
Vì khó hiểu code nên:
Đoán đại, thử thay
Mã:
For Each Target In wsMain.Range([A10], [A60000].End(3))
thành
Mã:
For Each Target In wsMain.Range("T10:U10")
Thank bạn!
Hôm trước mình gửi nhầm file, bạn có thể giúp mình
Mã:
For Each Target In wsMain.Range([A vị trí T10 trong A10-A6000], [A vị trí U10 trong A10-A6000].End(3))
Xem file đính kèm mình nghĩ bạn sẽ hiểu, mong bạn thông cảm vì mình không rành code, Rất mong được sự giúp đở của bạn!
 

File đính kèm

  • CAU KIEN DUC SAN.xls
    67.5 KB · Đọc: 14
Sub laydaihiep()
Dim wsNew As Worksheet, wsMain As Worksheet
Dim list_of_existing As String, Target As Range
Dim X, Y
X = Application.Match("T10", Range("A1:A6000"), 0)
Y = Application.Match("U10", Range("A1:A6000"), 0)
Set wsMain = Sheets("Danh muc")
For Each Target In wsMain.Range("A" & X & ":B" & Y)
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
Else
ThisWorkbook.Sheets("nguon").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Sheets(ThisWorkbook.Sheets.Count)
.Name = Target.Value
.[e12] = wsMain.Range(Target.Address).Offset(, 3).Value
End With
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
Mình viết đoạn code nhưng bị lỗi tại For Each Target In wsMain.Range("A" & X & ":B" & Y)
pro nào giúp mình với
 
Sao không ai giúp mình nhỉ?
Kiểm tra lại kết quả trong file.
Mã:
Sub laydaihiep2()
Dim wsNew As Worksheet, wsMain As Worksheet
Dim list_of_existing As String, Target As Range
Dim X As Integer, Y As Integer
Set wsMain = Sheets("Danh muc")
X = Application.Match(wsMain.Range("T10"), wsMain.Range("A1:A6000"), 0)
Y = Application.Match(wsMain.Range("U10"), wsMain.Range("A1:A6000"), 0)
For Each Target In wsMain.Range("A" & X & ":B" & Y)
    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
        Else
            ThisWorkbook.Sheets("nguon").Copy _
                After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
            With Sheets(ThisWorkbook.Sheets.Count)
                .Name = Target.Value
                .[E12] = wsMain.Range(Target.Address).Offset(, 3).Value
            End With
        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
 

File đính kèm

  • CAU KIEN DUC SAN.xls
    119 KB · Đọc: 3
Sao không ai giúp mình nhỉ?
Không thành viên nào trả lời do bạn không giải thích rỏ ràng nên không ai hiểu bạn muốn làm như thế nào?
Theo tôi hiểu là:
Dựa vào cột A sheet Danh muc tách mỗi dòng từ dòng 10: 19 ra mỗi dòng là 1 biên bản, mẫu biên bản là sheet nguon.
 
Không thành viên nào trả lời do bạn không giải thích rỏ ràng nên không ai hiểu bạn muốn làm như thế nào?
Theo tôi hiểu là:
Dựa vào cột A sheet Danh muc tách mỗi dòng từ dòng 10: 19 ra mỗi dòng là 1 biên bản, mẫu biên bản là sheet nguon.
Đúng rồi bạn, nhưng mình muốn tách từ dòng T10, U10 (gián tiếp qua 2 ô chọn mình đã làm sẵn) T10, U10 thuộc cột A
Bài đã được tự động gộp:

Kiểm tra lại kết quả trong file.
Mã:
Sub laydaihiep2()
Dim wsNew As Worksheet, wsMain As Worksheet
Dim list_of_existing As String, Target As Range
Dim X As Integer, Y As Integer
Set wsMain = Sheets("Danh muc")
X = Application.Match(wsMain.Range("T10"), wsMain.Range("A1:A6000"), 0)
Y = Application.Match(wsMain.Range("U10"), wsMain.Range("A1:A6000"), 0)
For Each Target In wsMain.Range("A" & X & ":B" & Y)
    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
        Else
            ThisWorkbook.Sheets("nguon").Copy _
                After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
            With Sheets(ThisWorkbook.Sheets.Count)
                .Name = Target.Value
                .[E12] = wsMain.Range(Target.Address).Offset(, 3).Value
            End With
        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
Đây đúng là thứ mình cần, cảm ơn bạn nhiều, Cho mình hỏi thêm cái này nha!
Giả sử bảng tính của mình khoảng có 100 sheet và 2 sheet nguồn "Danh muc", "nguồn" bây giờ mình muốn chọn 98 sheet còn lại phải viết thế nào nhỉ?
 
Lần chỉnh sửa cuối:
Giúp mình sửa lại hai đoạn code này với
Đoạn code thứ nhất Hide các hàng: mình viết code đặt vào nút "hide" như bị 1 vấn đề. khi chọn T10 = "Cấu kiện 1" thì bị hide hàng 9 và 10.
Đoạn cade thứ 2 chọn các sheet và xóa: khi thực hiện lệnh thì excel hiện các ô cửa bắt xác nhận có xóa hay không xóa,các bạn giúp mình bỏ bước này với.
Code mình viết đính kèm trong file excel
Thank các bạn trước!
 

File đính kèm

  • CAU KIEN DUC SAN.xls
    181 KB · Đọc: 6
Giúp mình sửa lại hai đoạn code này với
Đoạn code thứ nhất Hide các hàng: mình viết code đặt vào nút "hide" như bị 1 vấn đề. khi chọn T10 = "Cấu kiện 1" thì bị hide hàng 9 và 10.
Đoạn cade thứ 2 chọn các sheet và xóa: khi thực hiện lệnh thì excel hiện các ô cửa bắt xác nhận có xóa hay không xóa,các bạn giúp mình bỏ bước này với.
Code mình viết đính kèm trong file excel
Thank các bạn trước!
Xem thử File.
Không nên dùng từ pro này, pro nọ nhé, nội quy ghi cụ thể thế này:

A_Noiquy.JPG
 

File đính kèm

  • CAU KIEN DUC SAN.xls
    117 KB · Đọc: 5
Web KT
Back
Top Bottom