Xin trợ giúp tính số lượng hàng nhập theo ngày (1 người xem)

  • Thread starter Thread starter ntquantn
  • Ngày gửi Ngày gửi
Liên hệ QC

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

ntquantn

Thành viên chính thức
Tham gia
13/4/12
Bài viết
72
Được thích
12
Chào các bạn,

Mình có 1 file theo dõi hàng nhập và xuất tại các sheets tương ứng.
Mình muốn xem nhanh số lượng từng mã hàng đã nhập theo thời gian (dùng code VBA) mà không biết cách làm thế nào.

Mong các bạn xem file đính kèm và giúp mình đoạn code nhé.

Chân thành cảm ơn.
 

File đính kèm

Ui, cảm ơn bạn rất rất nhiều. Để mình thử luôn.

Mình cũng vừa hì hục cả buổi xong. Nhờ bạn và mọi người xem giúp đoạn code của mình liệu có vấn đề gì không nhé
Mã:
With ThisWorkbook.Worksheets("Nhapkhoxuong")
  Set sht = ThisWorkbook.Sheets("Nhapkhoxuong")
  EndCN = .Cells(3, .Columns.Count).End(xlToLeft).Column
 
  EndRN = .Range("B" & Rows.Count).End(xlUp).Row
  ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN).Value

    For j = 1 To UBound(ArrNhap, 1)
                If ArrNhap(j, 1) = hangnhap Then
                    For k = 4 To UBound(ArrNhap, 2)
                       If ArrNhap(1, k) >= tungay And ArrNhap(1, k) <= denngay And IsNumeric(ArrNhap(j, k)) Then
                            soluongnhap = soluongnhap + ArrNhap(j, k)
                        End If
                    Next k
                    Exit For
                End If
    Next j
End With
Me.lbHangxuat.Caption = soluongxuat
Me.lbHangnhap.Caption = soluongnhap
End Sub
ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN).Value: lấy dư 1 cột, chỉnh lại
ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN-1).Value
Code chạy chậm 1 chút nếu dữ liệu lớn vì phải xử lý những ArrNhap(j, k) không cần thiết
 
Upvote 0
Trong Form của chủ bài đăng có 2 nhãn để thể hiện 2 sản lượng nhập hay xuất hàng hóa.
trong cùng 1 thời kỳ (Ngày đàu & ngày cuối) cho 2 loại mặt hàng khác nhau.

Có thể xài các ListBox để hiện 2 danh sách hàng đã xuất hay nhập trong kỳ hay không?

:inv:
Trong form của mình có 2 combo dành cho theo dõi xuất và nhập.
Vì lúc xây dựng csdl thì phần xuất có tách theo số lượng từng lần xuất nhưng phần nhập thì lại chỉ làm theo dõi tổng trong 1 ngày (cái này là sai lầm) thành ra ko làm listbox theo dõi (do phần nữa là mình chưa thạo). Chứ nếu có thêm listbox chi tiết thì tốt quá.
 
Upvote 0
ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN).Value: lấy dư 1 cột, chỉnh lại
ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN-1).Value
Code chạy chậm 1 chút nếu dữ liệu lớn vì phải xử lý những ArrNhap(j, k) không cần thiết
Phần lấy dư 1 cột mình ko rõ lắm, mình tưởng EndCN là cột cuối thì mình tính từ cột mã hàng (B) là vừa khớp chứ nhỉ?
Còn xử lý các ArrNhap(j, k) thừa thì mình tưởng là đã có các đk trước đó rồi thì sẽ loại được việc xử lý thừa?
 
Upvote 0
Phần lấy dư 1 cột mình ko rõ lắm, mình tưởng EndCN là cột cuối thì mình tính từ cột mã hàng (B) là vừa khớp chứ nhỉ?
Còn xử lý các ArrNhap(j, k) thừa thì mình tưởng là đã có các đk trước đó rồi thì sẽ loại được việc xử lý thừa?
Ví dụ dữ liệu từ cột B đến cột G
EndCN=7 là thứ tự cột cuối
ArrNhap = .Range("B3:B" & EndRN).Resize(, EndCN).Value
Resize(, EndCN) là lấy 7 cột từ cột B, sẽ lấy tới cột G
Mã:
   For j = 1 To UBound(ArrNhap, 1)
               If ArrNhap(j, 1) = hangnhap Then
                   For k = 4 To UBound(ArrNhap, 2)
                      If ArrNhap(1, k) >= tungay And ArrNhap(1, k) <= denngay And IsNumeric(ArrNhap(j, k)) Then                            
                                   soluongnhap = soluongnhap + ArrNhap(j, k)
                       End If
                   Next k
                   Exit For
               End If
   Next j

For k = 4 To UBound(ArrNhap, 2) duyệt qua tất cả các cột, thật ra chỉ cần duyệt các cột từ ngày tới ngày
soluongnhap = soluongnhap + ArrNhap(j, k) : Có số liệu hoặc không có cũng cộng, thêm điều kiện có dữ liệu mới cộng
Code của bạn khá ổn, chạy ra kết quả chuẩn, chỉ cần chỉnh cột ArrNhap sẽ hợp lý hơn
Chỉ cần dùng 1 mảng Arr, tiết kiệm bộ nhớ, tăng tốc khi dữ liệu nhiều
 
Upvote 0
:close_tema:
. . . Vì lúc xây dựng csdl thì phần xuất có tách theo số lượng từng lần xuất nhưng phần nhập thì lại chỉ làm theo dõi tổng trong 1 ngày (cái này là sai lầm) thành ra ko làm listbox theo dõi (do phần nữa là mình chưa thạo). Chứ nếu có thêm listbox chi tiết thì tốt quá.

Hình như đến giờ bạn đã có cảm nhận rằng cấu trúc CSDL của mình đã chệch hướng.

Đã vậy bạn nên dừng ngay & mô tả từ đầu CSDL của bạn để cộng đồng GPE.COM giúp bạn xây mới CSDL cho chuẩn hơn.
Cộng đồng này có thể giúp bạn tất tần tật, kể cả việc giúp bạn lấn càng ngày càng sâu vô sai lầm.
:close_tema:
Dũng cảm lên bạn!
 
Upvote 0
:close_tema:

Hình như đến giờ bạn đã có cảm nhận rằng cấu trúc CSDL của mình đã chệch hướng.

Đã vậy bạn nên dừng ngay & mô tả từ đầu CSDL của bạn để cộng đồng GPE.COM giúp bạn xây mới CSDL cho chuẩn hơn.
Cộng đồng này có thể giúp bạn tất tần tật, kể cả việc giúp bạn lấn càng ngày càng sâu vô sai lầm.
:close_tema:
Dũng cảm lên bạn!

Mình cũng biết việc xây dựng csdl chuẩn là rất quan trọng. Nhưng như ở trên mình đã lỡ làm đến phút cuối rồi nên đành giải quyết theo kiểu xử lý sự cố.
Vốn là mình rất mù về khoản này. Trước khi làm mình cũng làm csdl (rất đơn giản) để phục vụ công việc. Nhưng đến khi bắt tay vào làm xong mục này, cộng với học hỏi hiểu biết thêm một chút, lại muốn thêm mục kia, được tính năng này lại muốn thêm tính năng kia (theo kiểu được Voi rồi thì muốn thêm cả Hai bà Trưng. Thành ra cuối cùng lổn nhổn. Cộng với điều kiện thời gian và công việc nên đành tạm chấp nhận để sử dụng trước mắt.
Còn Mình cũng đã lên kế hoạch để làm lại bản hoàn thiện mới tinh từ đầu để phục vụ công việc.
Rất cảm ơn bạn và các thành viên khác đã nhiệt tình góp ý một cách thiện chí.
Nói sơ qua về nhu cầu của mình:
Bên mình sản xuất hàng đông lạnh có 1 cơ sở sản xuất, 1 điểm giới thiệu bán lẻ và bán buôn, và 1 số đại lý.
Mình đã làm được (khá lổn nhổn, tính năng chưa thật ưng ý do khả năng có hạn) phần bán hàng, xuất nhập tồn của cửa hàng, xuất nhập tồn của xưởng sản xuất.
Phần quản lý kho nguyên liệu, vật tư sản xuất (xuất nhập tồn) thì chưa được do chưa nghĩ được cách giải quyết sai số, sai khác đơn vị tính, vật tư tiêu hao. Và các báo cáo tổng hợp tự động. Công nợ. Làm việc online.. ..
 
Upvote 0
Còn đây là file chỉ xài 1 listBox, nhưng có tách riêng cột số lượng nhập hay số lượng xuất & thêm cột lũy kế để dễ theo dõi.
 

File đính kèm

Upvote 0
Còn đây là file chỉ xài 1 listBox, nhưng có tách riêng cột số lượng nhập hay số lượng xuất & thêm cột lũy kế để dễ theo dõi.

Híc, bài toán của mình đưa ra, các bác đã mất công giải hộ mà mình nhìn như nhìn bức vách. Xấu hổ quá nhưng mãi vẫn chưa hiểu rõ code của bác , mong bác giải thích rõ thêm giúp mình về lý do sử dụng function TxTToDate, tính SoNgay, và cách hoạt động của dArr() được không?
Mã:
Private Sub NutBaocao_Click()

 Dim fDat As Date, lDat As Date, SoNgay As Integer, J As Long, W As Long, SN As Integer
 Dim DongN As Long
 Dim RgN As Range, ShN As Worksheet, ArrN(), ShX As Worksheet, ArrX()
 ReDim dArr(1 To 356, 1 To 5)
 
 fDat = TxtToDate(Me!txtTuNgay.Text):           lDat = TxtToDate(Me!txtDenNgay.Text)
 If fDat < 999 Then Exit Sub
 SoNgay = lDat - fDat
 Set ShN = ThisWorkbook.Worksheets("Nhap"):     Set ShX = ThisWorkbook.Worksheets("Xuat")
 ArrN() = ShN.Range(ShN.[b1], ShN.[b1].End(xlDown)).Value
 For J = 2 To UBound(ArrN())                    'Xác Dinh Dòng Có Mã Hàng Nhâp: '
    If ArrN(J, 1) = Me.cobHangXuat.Text Then
        DongN = J:                              Exit For
    End If
 Next J
 ArrN() = ShN.Range(ShN.[e1], ShN.[e1].End(xlToRight))
 ArrX() = ShX.[c2].Resize(ShX.[c2].CurrentRegion.Rows.Count, 10).Value
 For SN = 0 To SoNgay
1 'Nhâp Hàng '
    For J = 1 To UBound(ArrN(), 2)
        If ArrN(1, J) = SN + fDat Then
            If ShN.Cells(DongN, J + 4).Value > 0 Then
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = SN + fDat
                dArr(W, 3) = ShN.Cells(DongN, J + 4).Value
                If W = 1 Then
                    dArr(W, 5) = dArr(W, 3)
                ElseIf W > 1 Then
                    dArr(W, 5) = dArr(W - 1, 5) + dArr(W, 3)
                End If
                Exit For
            End If
        End If
    Next J
2 ' Xuát Hàng  '
    For J = 1 To UBound(ArrX())
        If ArrX(J, 1) = SN + fDat And ArrX(J, 7) = Me!cobHangXuat.Text Then
            W = W + 1:                          dArr(W, 1) = W
            dArr(W, 2) = SN + fDat:             dArr(W, 4) = ArrX(J, 10)
            If W = 1 Then
                dArr(W, 5) = -1 * dArr(W, 4)
            ElseIf W > 1 Then
                dArr(W, 5) = dArr(W - 1, 5) - dArr(W, 4)
            End If
        End If
    Next J
 Next SN
 If W Then
    Me!lbXuat.List = dArr()
 End If
End Sub

Function TxtToDate(StrC As String) As Date
 Dim Nm As Long, Th As Byte, Ng As Byte, VTr As Byte

 If Len(StrC) < 8 Then Exit Function
 Nm = CLng(Right(StrC, 4))
 VTr = InStr(StrC, "/")
 If VTr Then
    Ng = CByte(Left(StrC, VTr - 1)):        StrC = Mid(StrC, VTr + 1, 4)
 End If
 VTr = InStr(StrC, "/")
 If VTr Then Th = CByte(Left(StrC, VTr - 1))
 TxtToDate = DateSerial(Nm, Th, Ng)
End Function
 
Upvote 0
Trước tiên là hàm tự tạo chuyển chuỗi sang kiểu dữ liệu ngày:
PHP:
Function TxtToDate(StrC As String) As Date
 Dim Nm As Long, Th As Byte, Ng As Byte, VTr As Byte

2 If Len(StrC) < 8 Then Exit Function
 Nm = CLng(Right(StrC, 4))
4 VTr = InStr(StrC, "/")
 If VTr Then
 6  Ng = CByte(Left(StrC, VTr - 1)):        StrC = Mid(StrC, VTr + 1, 4)
 End If
8 VTr = InStr(StrC, "/")
 If VTr Then Th = CByte(Left(StrC, VTr - 1))
10 TxtToDate = DateSerial(Nm, Th, Ng)
End Function
Dg1: Khai báo các tham biến cẩn cho chương trình
Dg2: (Ta biết rằng hàm cần được cung cấp 1 tham biến kiểu chuỗi; Nó đã được hướng dẫn nhập theo dạng 'DD/MM/yyyy')
Nếu nhập chuỗi ngắn hơn thì sẽ không nhận được kết quả hàm trả về.
Dg3: Cắt 4 kí tự số cuối trong chuỗi & biến nó thành kí số chỉ năm
Dg4: Xác định vị trí chứa "/" trong chuỗi. (Chuỗi được nhập vô được khuyến cáo fân cách giữa các kí số là "/"; Cần tuân thủ)
Dg5: Điều kiện xác định được vị trí, thì thực hiện câu lệnh dưới liền kề
Dg6: Mệnh đề thứ nhất:Cắt lấy các kí số trước vị trí & biến nó thành số & gán vô tham biến đã khai báo. (Đó sẽ là số chỉ ngày của chuỗi cung cấp cho hàm)
Mệnh đề sau: Cắt bỏ kí số chỉ ngày & dấu fân cách thứ nhất trong chuỗi
Dg7: Kết thúc điều kiện
Dg8: Xác định vị trí fân cách thứ 2 trong chuỗi.
Dg9: Tương tự trên, cắt lấy kí số chỉ tháng & biến chúng thành số & ấn định vô tham biến Th đã khai báo
Dg10: Ấn định kết quả hàm trả về là dạng ngày-tháng-năm (theo dạng MM/dd/yyyy)

Ích lợi của hàm là chuyển dạng chuỗi chứa ngày-tháng-năm sang kiểu dữ liệu đúng cho các loại máy tính (DD/MM/yyyy hay MM/DD/yyyy)

Mong rằng đã giúp bạn í nhiều & chúc vui!
 
Upvote 0
File này có thêm fần tồn đầu kì trong TextBox luôn nè; Xin mời tham khảo tiếp:
PHP:
Private Sub NutBaocao_Click()
 Dim fDat As Date, lDat As Date, SoNgay As Integer, J As Long, W As Long, SN As Integer
 Dim DongN As Long, Col As Integer, TDKy As Double
 Dim RgN As Range, ShN As Worksheet, ArrN(), ShX As Worksheet, ArrX()
 ReDim dArr(1 To 356, 1 To 5)
 fDat = TxtToDate(Me!txtTuNgay.Text):           lDat = TxtToDate(Me!txtDenNgay.Text)
 If fDat < 999 Then Exit Sub
 SoNgay = lDat - fDat
 Set ShN = ThisWorkbook.Worksheets("Nhap"):     Set ShX = ThisWorkbook.Worksheets("Xuat")
 ArrN() = ShN.Range(ShN.[b1], ShN.[b1].End(xlDown)).Value
 For J = 2 To UBound(ArrN())                    'Xác Dinh Dòng Có Mã Hàng Nhâp: '
    If ArrN(J, 1) = Me.cobHangXuat.Text Then
        DongN = J:                              Exit For
    End If
 Next J
 ArrN() = ShN.Range(ShN.[e1], ShN.[e1].End(xlToRight))
 For J = 1 To UBound(ArrN(), 2)                 'Xác Dinh Luong Hàng Nhâp Dàu Kì    '
    If ArrN(1, J) = fDat Then
        Col = J - 1
        TDKy = Application.WorksheetFunction.Sum(ShN.Cells(DongN, "E").Resize(, Col))
        Exit For
    End If
 Next J
 ArrX() = ShX.[c2].Resize(ShX.[c2].CurrentRegion.Rows.Count, 10).Value
 For SN = 0 To SoNgay
1 'Nhâp Hàng '
    For J = Col To UBound(ArrN(), 2)
        If ArrN(1, J) = SN + fDat Then
            If ShN.Cells(DongN, J + 4).Value > 0 Then
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = SN + fDat
                dArr(W, 3) = ShN.Cells(DongN, J + 4).Value
                If W = 1 Then
                    dArr(W, 5) = dArr(W, 3)
                ElseIf W > 1 Then
                    dArr(W, 5) = dArr(W - 1, 5) + dArr(W, 3)
                End If
                Exit For
            End If
        End If
    Next J
2 ' Xuát Hàng  '
    For J = 1 To UBound(ArrX())
        If ArrX(J, 7) = Me!cobHangXuat.Text Then
            If ArrX(J, 1) = SN + fDat Then
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = SN + fDat:         dArr(W, 4) = ArrX(J, 10)
                If W = 1 Then
                    dArr(W, 5) = -1 * dArr(W, 4)
                ElseIf W > 1 Then
                    dArr(W, 5) = dArr(W - 1, 5) - dArr(W, 4)
                End If
            End If
            If SN = 0 And ArrX(J, 1) < fDat Then
                TDKy = TDKy - ArrX(J, 10)       'Trù Luong Hàng Xuát Truóc Kì       '
            End If
        End If
    Next J
 Next SN
 If W Then
    Me!lbXuat.List = dArr():                    Me!tbTDK.Value = TDKy
 End If
End Sub
 

File đính kèm

Upvote 0
Trước tiên là hàm tự tạo chuyển chuỗi sang kiểu dữ liệu ngày:
PHP:
Function TxtToDate(StrC As String) As Date
 Dim Nm As Long, Th As Byte, Ng As Byte, VTr As Byte

2 If Len(StrC) < 8 Then Exit Function
 Nm = CLng(Right(StrC, 4))
4 VTr = InStr(StrC, "/")
 If VTr Then
 6  Ng = CByte(Left(StrC, VTr - 1)):        StrC = Mid(StrC, VTr + 1, 4)
 End If
8 VTr = InStr(StrC, "/")
 If VTr Then Th = CByte(Left(StrC, VTr - 1))
10 TxtToDate = DateSerial(Nm, Th, Ng)
End Function
Dg1: Khai báo các tham biến cẩn cho chương trình
Dg2: (Ta biết rằng hàm cần được cung cấp 1 tham biến kiểu chuỗi; Nó đã được hướng dẫn nhập theo dạng 'DD/MM/yyyy')
Nếu nhập chuỗi ngắn hơn thì sẽ không nhận được kết quả hàm trả về.
Dg3: Cắt 4 kí tự số cuối trong chuỗi & biến nó thành kí số chỉ năm
Dg4: Xác định vị trí chứa "/" trong chuỗi. (Chuỗi được nhập vô được khuyến cáo fân cách giữa các kí số là "/"; Cần tuân thủ)
Dg5: Điều kiện xác định được vị trí, thì thực hiện câu lệnh dưới liền kề
Dg6: Mệnh đề thứ nhất:Cắt lấy các kí số trước vị trí & biến nó thành số & gán vô tham biến đã khai báo. (Đó sẽ là số chỉ ngày của chuỗi cung cấp cho hàm)
Mệnh đề sau: Cắt bỏ kí số chỉ ngày & dấu fân cách thứ nhất trong chuỗi
Dg7: Kết thúc điều kiện
Dg8: Xác định vị trí fân cách thứ 2 trong chuỗi.
Dg9: Tương tự trên, cắt lấy kí số chỉ tháng & biến chúng thành số & ấn định vô tham biến Th đã khai báo
Dg10: Ấn định kết quả hàm trả về là dạng ngày-tháng-năm (theo dạng MM/dd/yyyy)

Ích lợi của hàm là chuyển dạng chuỗi chứa ngày-tháng-năm sang kiểu dữ liệu đúng cho các loại máy tính (DD/MM/yyyy hay MM/DD/yyyy)

Mong rằng đã giúp bạn í nhiều & chúc vui!

Cảm ơn bạn,

Việc ReDim dArr(1 To 356, 1 To 5) thì có làm mất dữ liệu không khi dArr(1 to 356...) và có thể thay dArr(1 to (cột cuối nhập + dòng cuối xuất) , 1 to 5) ?

Mong bạn giải thích thêm Thế còn việc tính số ngày, và hoạt động của dArr() thì như thế nào hả bạn?
 
Upvote 0
(1) Việc ReDim dArr(1 To 356, 1 To 5) thì có làm mất dữ liệu không khi dArr(1 to 356...) và có thể thay dArr(1 to (cột cuối nhập + dòng cuối xuất) , 1 to 5) ?

(3) Thế còn việc tính số ngày, và (2) hoạt động của dArr() thì như thế nào hả bạn?

(1) Con số 356 là con số bâng quơ í mà!
Nên thay là ReDim dArr( 1 To 2* [Dòng cuối trang 'Xuát'], 1 to 5)
Vì lẽ dĩ nhiện là dòng xuất thường nhiều hơn số dòng nhập.

(2) Thì trong quá trình duyệt dữ liệu của 2 trang tính, nêu dòng nào thỏa thì ta ghi vô mãng mà thôi.

(3) Tính số ngày thì thường lấy hiệu của chúng đem cọng với đơn vị
Nhưng trong chương trình thì duyệt theo tham biến từ trị 0 cho đến trị chứa trong tham biến 'SoNgay'; ta không cần thêm 1 f ép cọng nữa, tốn năng lượng cho bạn & cho xã hội.
 
Upvote 0
Cảm ơn bạn và mọi người đã rất nhiệt tình ><></

File này có thêm fần tồn đầu kì trong TextBox luôn nè; Xin mời tham khảo tiếp:
PHP:
Private Sub NutBaocao_Click()
 Dim fDat As Date, lDat As Date, SoNgay As Integer, J As Long, W As Long, SN As Integer
 Dim DongN As Long, Col As Integer, TDKy As Double
 Dim RgN As Range, ShN As Worksheet, ArrN(), ShX As Worksheet, ArrX()
 ReDim dArr(1 To 356, 1 To 5)
 fDat = TxtToDate(Me!txtTuNgay.Text):           lDat = TxtToDate(Me!txtDenNgay.Text)
 If fDat < 999 Then Exit Sub
 SoNgay = lDat - fDat
 Set ShN = ThisWorkbook.Worksheets("Nhap"):     Set ShX = ThisWorkbook.Worksheets("Xuat")
 ArrN() = ShN.Range(ShN.[b1], ShN.[b1].End(xlDown)).Value
 For J = 2 To UBound(ArrN())                    'Xác Dinh Dòng Có Mã Hàng Nhâp: '
    If ArrN(J, 1) = Me.cobHangXuat.Text Then
        DongN = J:                              Exit For
    End If
 Next J
 ArrN() = ShN.Range(ShN.[e1], ShN.[e1].End(xlToRight))
 For J = 1 To UBound(ArrN(), 2)                 'Xác Dinh Luong Hàng Nhâp Dàu Kì    '
    If ArrN(1, J) = fDat Then
        Col = J - 1
        TDKy = Application.WorksheetFunction.Sum(ShN.Cells(DongN, "E").Resize(, Col))
        Exit For
    End If
 Next J
 ArrX() = ShX.[c2].Resize(ShX.[c2].CurrentRegion.Rows.Count, 10).Value
 For SN = 0 To SoNgay
1 'Nhâp Hàng '
    For J = Col To UBound(ArrN(), 2)
        If ArrN(1, J) = SN + fDat Then
            If ShN.Cells(DongN, J + 4).Value > 0 Then
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = SN + fDat
                dArr(W, 3) = ShN.Cells(DongN, J + 4).Value
                If W = 1 Then
                    dArr(W, 5) = dArr(W, 3)
                ElseIf W > 1 Then
                    dArr(W, 5) = dArr(W - 1, 5) + dArr(W, 3)
                End If
                Exit For
            End If
        End If
    Next J
2 ' Xuát Hàng  '
    For J = 1 To UBound(ArrX())
        If ArrX(J, 7) = Me!cobHangXuat.Text Then
            If ArrX(J, 1) = SN + fDat Then
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = SN + fDat:         dArr(W, 4) = ArrX(J, 10)
                If W = 1 Then
                    dArr(W, 5) = -1 * dArr(W, 4)
                ElseIf W > 1 Then
                    dArr(W, 5) = dArr(W - 1, 5) - dArr(W, 4)
                End If
            End If
            If SN = 0 And ArrX(J, 1) < fDat Then
                TDKy = TDKy - ArrX(J, 10)       'Trù Luong Hàng Xuát Truóc Kì       '
            End If
        End If
    Next J
 Next SN
 If W Then
    Me!lbXuat.List = dArr():                    Me!tbTDK.Value = TDKy
 End If
End Sub

Cảm ơn bạn rất nhiều ><></
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT

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

Back
Top Bottom