Nhờ viết code cho form theo dõi bán hàng (1 người xem)

Liên hệ QC

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

ali3340tc

Thành viên chính thức
Tham gia
19/5/09
Bài viết
78
Được thích
16
Xin chào tất cả các anh chị và các bạn

Hiện tại tôi đang cần lập 1 form tự động lưu kết quả bán hàng nhưng tôi không biết 1 chút nào về code. Nhờ các anh chị và các bạn giúp đỡ.

Vì hơi khó diễn tả yêu cầu nên tôi đã viết chi tiết yêu cầu trong file đính kèm. Mong các anh chị và các bạn giúp đỡ dùm.

Xin cảm ơn.
 

File đính kèm

Xin chào tất cả các anh chị và các bạn....
chào bạn,

sau khi xem file thì mình góp ý thế này:
1. Sheet Data bạn bố trí vậy là ko được chuẩn lắm, đó đơn giản là 3 nhân viên và 3 sản phẩm, nếu lên đến vài chục, vài trăm làm theo kiểu đó chắc chít :-=
2. Sheet Form tại sao chỉ có 10 ngày, mà ko phải là 31 ngày?

bạn mở tập tin đính kèm, vào Sheet1 xem cách trình bày thế có hợp lý hơn ko? --> khi Update số liệu từ sheet Form cũng ko khó + lọc tên nhân viên hoặc sản phẩm --> rất tiện.

Link: https://www.mediafire.com/?v1k6d8e751qbgeq
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào tất cả các anh chị và các bạn

Hiện tại tôi đang cần lập 1 form tự động lưu kết quả bán hàng nhưng tôi không biết 1 chút nào về code. Nhờ các anh chị và các bạn giúp đỡ.

Vì hơi khó diễn tả yêu cầu nên tôi đã viết chi tiết yêu cầu trong file đính kèm. Mong các anh chị và các bạn giúp đỡ dùm.

Xin cảm ơn.

File bạn thiết kế có nhiều cái không hợp lý:
1/ Về sheet Form (gọi là phiếu xuất hàng): đã gọi là phiếu xuất hàng thì 1 ngày 1 nhân viên có thể xuất nhiều hàng hóa, nên không thể dùng nhiều cột ngày, thiếu số phiếu xuất hàng, đơn vị tính, đơn giá, thành tiền, về sản phẩm (nên tạo danh sách ở 1 sheet riêng) và dùng validation để chọn lấy 1 loại hàng hóa và nên giới hạn bao nhiêu loại hàng hóa (vì cùng 1 lúc có thể xuất nhiều loại hàng hóa cùng 1 lúc)để nhập dữ liệu vào sheet Data.

2/ Sheet Data nên thiết kế lại như những nội dung như đã nêu trên và nên nhập dữ liệu liên tục để thuận tiện trong khâu tổng hợp báo cáo (nếu thiết kế như kiểu của bạn thì khâu tổng hợp sẽ khó khăn vô cùng), khi chứa bva2i nghìn dòng dữ liệu làm sao bạn tổng hợp được tất cả các sản phẩm của các nhân viên, và không cần ghi số lần (vì căn cứ vào số phiếu sẽ tính được số lần xuất hàng).

3/ Nên thiết kế riêng 1 sheet liệt kê tất cả các loại hàng hóa, đơn vị tính, đơn giá, nó sẽ giúp bạn nhanh chóng trong khâu nhập liệu (ví dụ: bạn chỉ cần chọn 1 loại hàng hóa thì nó sẽ lấy ngay đơn vị tính, đơn giá và chỉ cần nhập thêm số lượng thì được tổng số tiền.

4/ Nên thiết kế thêm 1 sheet chứa dữ nhập hàng và 1 sheet theo dõi tồn (căn cứ vào hàng nhập, xuất thì nó tự động ra kết quả tồn từng loại hàng hóa).
 
Lần chỉnh sửa cuối:
Upvote 0
Chào bạn phucbugis

Rất cảm ơn về góp ý của bạn.Thật sự là sheet1 của bạn bố trí hợp lý hơn của mình nhiều. Trong trường hợp của mình, số lượng nhân viên và sản phẩm cũng tương đối nhiều. Về sheet Form: Do đặc trưng công việc nên khoảng thời gian theo dõi là 10 ngày/lần chứ ko phải từ mùng 1~10. Mong bạn tiếp tục giúp đỡ.
 
Upvote 0
Chào bạn phucbugis

Rất cảm ơn về góp ý của bạn.Thật sự là sheet1 của bạn bố trí hợp lý hơn của mình nhiều. Trong trường hợp của mình, số lượng nhân viên và sản phẩm cũng tương đối nhiều. Về sheet Form: Do đặc trưng công việc nên khoảng thời gian theo dõi là 10 ngày/lần chứ ko phải từ mùng 1~10. Mong bạn tiếp tục giúp đỡ.

bạn mở tập tin đính kèm, cho chạy Macro

nhập thử 1 vài số liệu tại sheet Form, click nút Lọc số liệu --> xem kết quả tại sheet Data.

'- - -
pass mặc định cho sheet Data là GPE
dùng Alt+F11 để vào xem code.

Mã:
Public Sub GPE_luu()
Dim ArrData(), ArrNgay(), dArr()
Dim i As Long, j As Long, K As Long
Application.ScreenUpdating = False
    'Activesheet
    ArrData = Range([B1048576].End(xlUp), [L9]).Value2
    ArrNgay = [C8:L8].Value2
    
    If Range("B5") = "" Or Range("B6") = "" Or Range("B7") = "" Then
        MsgBox ("So hieu, ten NV hoac lan con thieu"), vbExclamation: Exit Sub
    End If
    
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'nha loc (sheet nay` phai? mo? khoa)
    
    'UBound(ArrData, 1)     :vòng lap duyet tu dong 1 den dong cuoi' cua vung chon
    'UBound(ArrNgay, 2)     :vòng lap duyet tu cot 1 den cot cuoi' cua vung chon
    ReDim dArr(1 To UBound(ArrData, 1) * UBound(ArrNgay, 2), 1 To 15) 'xac dinh kich thuoc mang
    'duyet tung` row + cot truoc khi chuyen qua row ke' tiep
    For i = 1 To UBound(ArrData, 1)
        For j = 1 To UBound(ArrNgay, 2)
            If ArrData(i, j + 1) <> "" Then
                If tenSP <> ArrData(i, 1) Then K = K + 1    'else gan' tren cung` 1 row
                dArr(K, 1) = Range("B5")                'so hieu NV
                dArr(K, 2) = Range("B6")                'ten NV
                dArr(K, 3) = Range("B7")                'lan
                dArr(K, 4) = ArrData(i, 1)              'san pham
                dArr(K, j + 4) = ArrData(i, j + 1)      'doanh so'
                dArr(K, 15) = Now()                     'time
                
                tenSP = ArrData(i, 1)                   'luu ten SP da~ gan' vao mang
                x = K                                   'so san pham (ho tro border)
            End If
        Next j
    Next i
    
    If K Then
        With Sheets("Data")
            .Unprotect Password:="GPE": If .FilterMode Then .ShowAllData    'luon luon nha? loc truoc khi Update
            .Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(K, 15) = dArr
            .Range("A" & Rows.Count).End(xlUp).Offset(-x + 1).Resize(x, 15).Borders.LineStyle = xlContinuous
            
            .Cells.Locked = True
            .Protect Password:="GPE", AllowFiltering:=True                  'cho phep' loc. khi sheet Protect
        End With
        
        Erase ArrData: Erase ArrNgay: MsgBox ("Update xong"), vbInformation
    Else
        MsgBox ("ko co so lieu Update"), vbExclamation
    End If
    
Application.ScreenUpdating = True


End Sub

Link: https://www.mediafire.com/?gaj9919wfmhzec7

'---
Chúc mọi người cuối tuần vui vẻ ! :-=
 
Lần chỉnh sửa cuối:
Upvote 0
Chào bạn phucbugis

Rất cảm ơn về góp ý của bạn.Thật sự là sheet1 của bạn bố trí hợp lý hơn của mình nhiều. Trong trường hợp của mình, số lượng nhân viên và sản phẩm cũng tương đối nhiều. Về sheet Form: Do đặc trưng công việc nên khoảng thời gian theo dõi là 10 ngày/lần chứ ko phải từ mùng 1~10. Mong bạn tiếp tục giúp đỡ.

Thiết kế sheet Data như vậy thì tổng hợp số liệu bằng cách nào?

Góp Ý:
Nên thiết kế sheet Data sao cho đáp ứng được một số yêu cầu sau: Nhập liệu, tổng hợp và trích lọc dữ liệu theo yêu cầu công việc 1 cách thuận tiện và nhanh chóng.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom