Nhờ sửa code VBA

Liên hệ QC

nguyenmanhhao

Thành viên thường trực
Tham gia
22/4/08
Bài viết
289
Được thích
157
Nghề nghiệp
Quản lý nhân sự
Em có 1 file đơn hàng, đã có Macro, nhưng khi sử dụng xảy ra trường hợp như sau:
Tại Sheer Print, khi nhấn vào nút Execute, thì mọi dữ liệu ở Sheet ProposanQty sẽ được cập nhật sang Sheet Print để in, nhưng nhà cung cấp CTCP BOT GIAT LIX WOW - BIG C lại thể hiện thành 2 đơn hàng khác nhau.
Câu hỏi nhờ các anh chị giúp là: Làm thể nào để các dữ liệu của 1 nhà cung cấp được thể hiện trong 1 đơn hàng (Ví dụ: Đơn hàng số 7 của NCC Big C sẽ hợp nhất với đơn hàng số 4 cũng nhà cung cấp Big C thành 1 đơn hàng mà không tách riêng thành 2 đơn hàng khác nhau).
Cảm ơn các anh chị.
 

File đính kèm

Em có 1 file đơn hàng, đã có Macro, nhưng khi sử dụng xảy ra trường hợp như sau:
Tại Sheer Print, khi nhấn vào nút Execute, thì mọi dữ liệu ở Sheet ProposanQty sẽ được cập nhật sang Sheet Print để in, nhưng nhà cung cấp CTCP BOT GIAT LIX WOW - BIG C lại thể hiện thành 2 đơn hàng khác nhau.
Câu hỏi nhờ các anh chị giúp là: Làm thể nào để các dữ liệu của 1 nhà cung cấp được thể hiện trong 1 đơn hàng (Ví dụ: Đơn hàng số 7 của NCC Big C sẽ hợp nhất với đơn hàng số 4 cũng nhà cung cấp Big C thành 1 đơn hàng mà không tách riêng thành 2 đơn hàng khác nhau).
Cảm ơn các anh chị.
Hiện tại bạn đang tạo 1 báo cáo theo Order No nên sẽ lấy theo tiêu thức trên.
Nếu bạn muốn tạo thêm theo Mã NCC tôi sẽ gợi ý như sau:
1/ Duyệt qua Sh ProposalQty lấy DM NCC.
2/ Duyệt qua DM NCC sẽ lấy lần lượt theo Order No.
Theo tôi hiểu báo của bạn là:
1/ Phần đầu là tổng hợp Order No
2/ Phần 2 là chi tiết của Order No.
Vậy nếu lấy thêm theo NCC thì phần Or No này sẽ bố trí thế nào.
Cụ thể lại phần BC tôi sẽ HD tiếp.
 
Upvote 0
Hiện tại bạn đang tạo 1 báo cáo theo Order No nên sẽ lấy theo tiêu thức trên.
Nếu bạn muốn tạo thêm theo Mã NCC tôi sẽ gợi ý như sau:
1/ Duyệt qua Sh ProposalQty lấy DM NCC.
2/ Duyệt qua DM NCC sẽ lấy lần lượt theo Order No.
Theo tôi hiểu báo của bạn là:
1/ Phần đầu là tổng hợp Order No
2/ Phần 2 là chi tiết của Order No.
Vậy nếu lấy thêm theo NCC thì phần Or No này sẽ bố trí thế nào.
Cụ thể lại phần BC tôi sẽ HD tiếp.
Dạ ý em là như thế này. Oder No vẫn lấy như vậy mà không thêm nhà cung cấp. Em chỉ muốn tất cả các Oder No giống nhau thì tổng hợp làm 1 Báo cáo (Print) thôi. Bác xem file và sửa thế nào để 2 đơn hàng em tô màu đỏ nó gộp làm 1 ạ
Như trên em đã nói, nhà cung cấp Big C đều có Oder No là 111120, nhưng khi Click vào nút Execute thì nó lại tách ra làm 2 (ở trang cuối cùng nó tách ra thêm 1 đơn hàng nữa) mà em muốn ở đây nó sẽ gộp vào với mã 111120 ở trang đơn hàng số 4.
Em gửi lại file. Bác xem hộ em với ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bác ThuNghi ơi. Bác xem hộ em với ạ.
 
Upvote 0
Theo như code trong file, muốn khắc phục vấn đề trên, trước khi chạy, phải Sort cột D- Sheet ProposalQty.
 
Upvote 0
Mình gần giữ nguyên giải thuật của bạn, chỉ viết lại Code và thêm 1 vòng lặp tránh yêu cầu sắp xếp cột D.
Bạn tham khảo nha

Mã:
Sub get_arts()
Dim Ip, StarRow, Ord_Luu, Ord
Dim Cl2 As Range, i, j
   Application.ScreenUpdating = False
     With Sheet1
      .Rows(5).ClearContents
        ActiveSheet.ResetAllPageBreaks
         .[A11:V11].ClearContents
           .[A12:V1000].Clear
            StarRow = 1
              For Ip = 2 To 12000
                Set Cl2 = Sheet3.Range("D" & Ip)
                  If Trim(Sheet3.Cells(Ip, 4)) = "" Then Exit For
                    If InStr(Ord_Luu, Trim(Sheet3.Cells(Ip, 4))) = 0 Then
                      Ord = Sheet3.Cells(Ip, 4) * 1
                        Ord_Luu = Ord_Luu & Trim(Sheet3.Cells(Ip, 4)) & ";"
                       Tde StarRow, Ip
                      StarRow = StarRow + 10
                    For j = 2 To 12000
                   If Sheet3.Cells(j, 4) * 1 = Ord Then
                  .Rows(11).Copy
                 .Cells(StarRow, 1).PasteSpecial Paste:=xlPasteFormats
                For i = 1 To 21
               If i = 14 Or i = 16 Or i = 18 Then
             .Cells(StarRow, i) = ""
            ElseIf i = 2 Then
          .Cells(StarRow, i) = Sheet3.Cells(j, i + 7)
          Else
        .Cells(StarRow, i) = Sheet3.Cells(j, i + 7)
      End If:  Next i
    StarRow = StarRow + 1
   End If: Next j: End If
  Next Ip
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'======================================================================
Sub Tde(ByVal Dg1 As Long, ByVal Dg2 As Long)
        Sheet1.Range("A1:V11").Copy Sheet1.Cells(Dg1, 1)
        Sheet1.Cells(Dg1 + 1, 1).Resize(, 22).HorizontalAlignment = xlCenterAcrossSelection
        Sheet1.Rows(Dg1 + 1).RowHeight = 26
        Dg1 = Dg1 + 4
        Sheet1.Rows(Dg1 - 1 & ":" & Dg1 + 4).RowHeight = 15
        Sheet1.Cells(Dg1, 12).Resize(, 5).Merge
        Sheet1.Rows(Dg1 + 1 & ":" & Dg1 + 3).Hidden = True
        Sheet1.Cells(Dg1, 1) = Trim(Sheet3.Cells(Dg2, 4))
        Sheet1.Cells(Dg1, 2) = Sheet3.Cells(Dg2, 5)
        Sheet1.Cells(Dg1, 3) = Sheet3.Cells(Dg2, 6)
        Sheet1.Cells(Dg1, 4) = Sheet3.Cells(Dg2, 2)
        Sheet1.Cells(Dg1, 7) = Sheet3.Cells(Dg2, 3)
        Sheet1.Cells(Dg1, 12) = Sheet3.Cells(Dg2, 1)
        Sheet1.Cells(Dg1, 17) = Sheet3.Cells(Dg2, 7)
End Sub
 

File đính kèm

Upvote 0
Cảm ơn anh Sealand đã giúp đỡ. File hay và sử dụng tốt. Tuy nhiên khi chạy macro thì các đơn hàng nó lại không nằm riêng trên từng trang mà nó lại gộp vào. Anh chỉnh sửa giúp em vấn đề này nữa nhé. Cảm ơn anh
 
Upvote 0
Bạn tham khảo bổ xung file sau nha
Lưu ý:Trong code mình vẫn để sử lý trực tiếp trên sheet cho dễ hiểu. Nếu dữ liệu lớn chuyển sang mảng tốc độ sẽ cải thiện đáng kể.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
E Cảm ơn anh sealand nhiệt tình giúp đỡ.a xem giúp lại phần giá trị đơn hàng vẫn chưa ra dữ liệu.E có sửa lại 1 số cột(e bôi màu vàng) cho phần dữ liệu của e đầy đủ hơn nhưng khi nhấp nút execute lai không ra dữ liệu như mong muốn.a sửa lại giúp e với nhé.
E gửi lại a file e đã sửa, a xem lại giúp e những phần tô màu vàng
E có 1 thắc mắc là khi e muốn điều chỉnh cỡ chữ, độ rộng các dòng khi e điều chỉnh từ dòng 1 tới dòng 11 rồi nhưng khi execute thì tất cả đều trở về định dạng ban đầu, cái này e điều chỉnh ở đâu ah?

Cảm ơn Anh
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom