Nhờ viết code cho bảng tổng hợp nhập xuất tồn có nhiều nhóm hàng. (2 người xem)

Liên hệ QC

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

tranthanhktt

Thành viên chính thức
Tham gia
7/9/10
Bài viết
55
Được thích
20
Chào các bạn ! mình đang gặp chút vấn đề trong file nhập xuất tồn kho, vì file có rất nhiều công thức nên rất nặng, mình đang chuyển qua sử dụng bằng vba nhưng mà chưa biết viết code cho bảng tổng hợp NXT cónhiềunhómhàng như thế nào. Rất mong các bạn giúp đỡ . Cám ơn nhiều.
 

File đính kèm

File đã chỉnh sửa

Cám ơn bạn . mình gửi file đã chỉnh sửa một số lỗi và các macro theo hướng dẫn của các bạn trên diễn đàn để chúng ta cùng nghiên cứu học hỏi tiếp nha. thật sự mỗi một hướng dẫn của các bạn rất hứu ích đối với mình để mình làm các chương trình khác ứng dụng cho công việc của mình . cám ơn cả nhà .http://www.mediafire.com/?p9tu4enuw24mroz
 
Upvote 0
Đây là 2 macro cha & mẹ & 1 macro con ( vừa cả & vừa là út)

Cám ơn bạn . mình gửi file đã chỉnh sửa một số lỗi và các macro theo hướng dẫn của các bạn trên diễn đàn để chúng ta cùng nghiên cứu học hỏi tiếp nha. thật sự mỗi một hướng dẫn của các bạn rất hứu ích đối với mình để mình làm các chương trình khác ứng dụng cho công việc của mình . cám ơn cả nhà

Macro cha có nội dung là:

Mã:
 Option Explicit
[B]Sub pn()[/B]
   FieuNhapXuat
[B]End Sub[/B]

Macro mẹ có vẻ dài hơn chút:

Mã:
 [B] Sub PX()[/B]
     FieuNhapXuat False
 [B]End Sub[/B]


Macro con:

PHP:
Sub FieuNhapXuat(Optional Nhap As Boolean = True)
 Dim I, HC, T As Long, Id As Long
 Dim TKNo As Range
 Dim TK As String, ShName As String
 
 If Nhap Then ShName = "pn" Else ShName = "px"              '<=|'
 Sheets(ShName).Select:                     TK = Range("D6")    '*'
 Range("A13:J65536").Clear
 Application.Calculation = xlCalculationManual
 Application.ScreenUpdating = False
 HC = Sheets("PHATSINH").Range("b60000").End(xlUp).Row
 I = 12:                                    T = 0
 For Each TKNo In Sheets("PHATSINH").Range("b7:b" & HC)
    If TKNo.Offset(0, IIf(Nhap, 3, 4)) = TK Then            '<=|'
        I = I + 1:                          T = T + 1
        Range("A" & I) = T:                 Range("C" & I) = TKNo
        Range("B" & I) = TKNo.Offset(0, 1)
        Range("D" & I) = TKNo.Offset(0, 2)
        Range("E" & I) = TKNo.Offset(0, 14)     '?'
        Range("F" & I) = TKNo.Offset(0, 14)     '?'
        Range("g" & I) = TKNo.Offset(0, 17)
        Range("H" & I).Formula = "=rc[-1]*rc[-2]"
    End If
 Next TKNo
 Set TKNo = Nothing          '<=| Lenh Này Là Thuà'
 If I = 13 Then
    Range("g13:h" & I).NumberFormat = "###,00"
    Range("A13 :h" & I).Font.Size = 11
    Range("A13:h" & I).VerticalAlignment = xlCenter
    Range("A13:h" & I + 1).WrapText = True
    Range("A13:h" & I + 7).Font.Name = "arial"
    Range("A" & I + 1 & ":h" & I + 7).Font.ColorIndex = 5
    Range("A" & I + 1 & ":h" & I + 1).Font.Bold = True
    Range("A" & I + 1 & ":h" & I + 1).Interior.ColorIndex = 20
    Range("B" & I + 2).Value = "=doc & vnd(r[-1]c[6])"
    Range("B" & I + 2).Font.Italic = True
    Range("B" & I + 2).Font.Name = "VNI-TIMES"
    
    If Nhap Then Id = 22 Else Id = 21                   '<=|'
    Range("E" & I + 4).Value = Sheets("THONGTIN").Range("A" & Id).Value
    Range("B" & I + 3).Value = Sheets("THONGTIN").Range("A14")
    Range("B" & I + 5).Value = Sheets("THONGTIN").Range("A15")
    
    If Nhap Then Id = 19 Else Id = 18                  '<=|'
    Range("C" & I + 5).Value = Sheets("THONGTIN").Range("A" & Id)
    Range("E" & I + 5).Value = Sheets("THONGTIN").Range("A16")
    Range("G" & I + 5).Value = Sheets("THONGTIN").Range("A17")
    Range("b" & I + 1).Value = Sheets("THONGTIN").Range("A20")
    Range("H" & I + 1).Formula = "=round(SUM(R13C:R" & I & "C),0)"
    Range("b" & I + 1).HorizontalAlignment = xlCenter   '**'
    Range("B" & I + 2 & ":h" & I + 2).MergeCells = True
    Range("B" & I + 2 & ":h" & I + 2).WrapText = True
    Range("B" & I + 2 & ":h" & I + 2).VerticalAlignment = xlCenter
'    Range("b" & I + 1).HorizontalAlignment = xlCenter'
    Range("C13:f" & I + 1).HorizontalAlignment = xlCenter
    Range("g" & I + 5 & ":h" & I + 5).MergeCells = True
    Range("g" & I + 5 & ":h" & I + 5).HorizontalAlignment = xlCenter
    Range("e" & I + 4 & ":h" & I + 4).HorizontalAlignment = xlCenter
    Range("e" & I + 4 & ":h" & I + 4).MergeCells = True
 'Goi Macro Cho 5 Dòng Lenh Này:'
    Range("A13:h" & I).Borders(xlEdgeLeft).LineStyle = xlContinuous     '7'
    Range("A13:h" & I).Borders(xlEdgeRight).LineStyle = xlContinuous    '10'
    Range("A13:h" & I).Borders(xlEdgeBottom).LineStyle = xlContinuous   '9'
    Range("A13:h" & I).Borders(xlEdgeTop).LineStyle = xlContinuous      '8'
    Range("A13:h" & I).Borders(xlInsideVertical).LineStyle = xlContinuous '11'
 'Goi Tiép Macro Cho 5 Dòng Lenh Này:'
    Range("A13:h" & I + 1).Borders(xlEdgeLeft).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeRight).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeBottom).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeTop).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlInsideVertical).LineStyle = xlContinuous
 End If
' Set TKNo = Nothing  <=| Lenh Này Là Thuà'
 If I > 13 Then
    Range("g13:h" & I).NumberFormat = "###,00"
    Range("A13 :h" & I).Font.Size = 11
    Range("A13:h" & I).VerticalAlignment = xlCenter
    Range("A13:h" & I + 1).WrapText = True
    Range("A13:h" & I + 7).Font.Name = "arial"
    Range("A" & I + 1 & ":h" & I + 7).Font.ColorIndex = 5
    Range("A" & I + 1 & ":h" & I + 1).Font.Bold = True
    Range("A" & I + 1 & ":h" & I + 1).Interior.ColorIndex = 20
    Range("B" & I + 2).Value = "=doc & vnd(r[-1]c[6])"
    Range("B" & I + 2).Font.Italic = True
    Range("B" & I + 2).Font.Name = "VNI-TIMES"
    If Nhap Then Id = 22 Else Id = 21                   '<=|'
    Range("E" & I + 4).Value = Sheets("THONGTIN").Range("A" & Id).Value
    Range("B" & I + 3).Value = Sheets("THONGTIN").Range("A14")
    Range("B" & I + 5).Value = Sheets("THONGTIN").Range("A15")
    
    If Nhap Then Id = 19 Else Id = 18                  '<=|'
    Range("C" & I + 5).Value = Sheets("THONGTIN").Range("A" & Id)
    Range("E" & I + 5).Value = Sheets("THONGTIN").Range("A16")
    Range("G" & I + 5).Value = Sheets("THONGTIN").Range("A17")
    Range("b" & I + 1).Value = Sheets("THONGTIN").Range("A20")
    Range("H" & I + 1).Formula = "=round(SUM(R13C:R" & I & "C),0)"
    
    Range("b" & I + 1).HorizontalAlignment = xlCenter
    Range("B" & I + 2 & ":h" & I + 2).MergeCells = True
    Range("B" & I + 2 & ":h" & I + 2).WrapText = True
    Range("B" & I + 2 & ":h" & I + 2).VerticalAlignment = xlCenter
   
    Range("C13:f" & I + 1).HorizontalAlignment = xlCenter
    Range("g" & I + 5 & ":h" & I + 5).MergeCells = True
    Range("g" & I + 5 & ":h" & I + 5).HorizontalAlignment = xlCenter
    Range("e" & I + 4 & ":h" & I + 4).HorizontalAlignment = xlCenter
    Range("e" & I + 4 & ":h" & I + 4).MergeCells = True
 'Goi Macro Cho 5 Dòng Lenh Này:'
    Range("A13:h" & I).Borders(xlEdgeLeft).LineStyle = xlContinuous
    Range("A13:h" & I).Borders(xlEdgeRight).LineStyle = xlContinuous
    Range("A13:h" & I).Borders(xlEdgeBottom).LineStyle = xlContinuous
    Range("A13:h" & I).Borders(xlEdgeTop).LineStyle = xlContinuous
    Range("A13:h" & I).Borders(xlInsideVertical).LineStyle = xlContinuous
    
    Range("A13:h" & I).Borders(xlInsideHorizontal).LineStyle = xlDot
 'Goi Tiép Macro Cho 5 Dòng Lenh Này:'
    Range("A13:h" & I + 1).Borders(xlEdgeLeft).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeRight).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeBottom).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlEdgeTop).LineStyle = xlContinuous
    Range("A13:h" & I + 1).Borders(xlInsideVertical).LineStyle = xlContinuous
 End If
 If I < 13 Then
    MsgBox "Um! khong phat sinh so phieu tren!", , "Thong báo"
    Exit Sub
 End If
 Application.Calculation = xlCalculationAutomatic
 Application.ScreenUpdating = True
                   
End Sub


Bạn chịu khó đối chiếu cái nha.
 
Lần chỉnh sửa cuối:
Upvote 0
Code tính xuất nhập tồn bằng kiểu mảng

Cám ơn bạn . mình gửi file đã chỉnh sửa một số lỗi và các macro theo hướng dẫn của các bạn trên diễn đàn để chúng ta cùng nghiên cứu học hỏi tiếp nha. thật sự mỗi một hướng dẫn của các bạn rất hứu ích đối với mình để mình làm các chương trình khác ứng dụng cho công việc của mình . cám ơn cả nhà .http://www.mediafire.com/?p9tu4enuw24mroz
Link die rồi bạn ơi. up lại file cho mình nghiên cứu với. Ko bít giúp được gì cho bạn ko nhưng theo mình, nếu nhiều mã hàng (hàng ngàn, chục ngàn dòng) thì nên viết code kiểu dữ liệu mảng tốc độ sẽ nhanh hơn.
Bạn xem và tham khảo thử code mình viết coi đúng ý bạn ko nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
cám ơn bạn ! nhưng nó báo lỗi đoạn này bạn xem lại dùm nhé. ReDim arr(1 To UBound(arr1, 1), 1 To 6)
 
Upvote 0
cám ơn bạn ! nhưng nó báo lỗi đoạn này bạn xem lại dùm nhé. ReDim arr(1 To UBound(arr1, 1), 1 To 6)
ah. lỗi này là do vị trí đặt của dòng ReDim arr(1 To UBound(arr1, 1), 1 To 6) này mình để ở phía trên. lúc test xong code mình lại chuyển nó lên ở đầu ở mục khai báo để nhìn cho dễ ai ngờ lại lỗi. Giờ bạn cắt đoạn code đó paste xuống dưới dòng "44 ln" nhé. Mình up lại file đã sữa lại lỗi này.
 

File đính kèm

Upvote 0
Cám ơn bạn! phương pháp củabạn chạy cũng khá nhanh nhưng nó chưa loạc dữ liệu theo ngày được, bạn xem lại dùm nhé để mình học hỏi với!
 
Upvote 0
Cám ơn bạn! phương pháp củabạn chạy cũng khá nhanh nhưng nó chưa loạc dữ liệu theo ngày được, bạn xem lại dùm nhé để mình học hỏi với!
"Lọc dữ liệu theo ngày" ý bạn là mình chọn kỳ để xem báo cáo thì nó sẽ lọc ra đúng ko, vậy thì chỉ cần chọn kỳ xem là tháng là đủ rồi. ví dụ cần xem báo cáo tháng 1 mình chọn tháng 1 sẽ lọc ra toàn bộ phát sinh nhập xuất trong tháng 1 nhưng quan trọng là phải kết chuyển đc số tồn cuối kỳ của tháng trước chuyển qua tháng sau thôi đúng ko. Để mình làm thử.
 
Upvote 0
ĐÚNG VẬY, CHỌN KỲ LÀ THÁNG HOẶC TỪ NGÀY ĐẾN NGÀY CŨNG ĐƯỢC . SẴN BẠN LÀM THỬ MÌNH GỬI FILE CỦA MÌNH LÊN BẠN NGHIÊN CỨU "MỔ SẺ LÀM THỊT NÓ " DÙM MÌNH NẾU CÓ NẤU ĐƯỢC MÓN NÀO NGON CHO MÌNH THƯỞNG THỨC VỚI! HIHI :http://www.4shared.com/rar/rWC-8pfR/QUAN_LY_KHO_NAM_2012__.html
FILE NÀY MỤC ĐẦU KỲ Ở BẢNG TỔNG HỢP MÌNH VẪN CHƯA BIẾT LỌC THEO THỜI GIAN VÌ VẬY MỖI THÁNG PHẢI LÀM RIÊNG 1 FILE CŨNG HƠI BẤT TIỆN,NẾU GIẢI QUYẾT ĐƯỢC VẤNĐỀ NÀY THÌ MỘT NĂM CHỈ CẦN MỘT FILE LÀ ĐỦ. NẾU ĐƯỢC BẠN NGHIÊN CỨU DÙM LUÔN NHE.!
 
Upvote 0
Web KT

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

Back
Top Bottom