"Đây là một tool làm bằng Excel về dành cho tổng hợp vật tư dành cho công ty xây dựng nhỏ. Chức năng của nó là nhập vật tư từ các đại lý.Dữ liệu được tự động chuyển đến các sheet các công trình. Cuối tháng có tổng kết công nợ của đại lý. Ngoài ra có thêm phần theo dõi về xe chở vật liệu để cuối tháng thống kê quãng đường mà xe chạy"
Mình mô tả qua bảng Excel mình làm được bạn nào thích thì download về tham khảo.

Các chức năng cho bài toán mình đã làm nhưng do kiến thức về ngôn ngữ vb không có ( mình học về lập trình) nên không thể hoàn thiện được bài toán. Mong bác nào cao thủ về VB giúp đỡ

1. Mình làm một phần mục lục tự update link khi tạo sheet mới. Nhưng đang bị lỗi " Reference is not valid" khi click vào "Back to index"
Code
Mã:
Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim M As Long
M = 1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = "INDEX"
.Cells(1, 1).Name = "Index"
End With
For Each wSheet In Worksheets
If wSheet.Name <> Me.Name Then
M = M + 1
With wSheet
.Range("H1").Name = "Start" & wSheet.Index
.Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Mucluc", TextToDisplay:="Back to Index"
End With
Me.Hyperlinks.Add Anchor:=Me.Cells(M, 1), Address:="", SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name
End If
Next wSheet
End Sub

2. Mình có các sheet "Đại lý" và các sheet " Công trình" . Dữ liệu được nhập từ sheet đại lý và ở sheet đại lý có cột Mã công trình. Khi điền tên công trình thì ở các sheet công trình đã tự update dữ liệu. Vấn đề cần mọi người giúp là ở các sheet công trình mình muốn sắp xếp dữ liệu lần lượt theo thời gian. Hiện tại là dữ liệu đang được sắp xếp theo thứ tự đại lý
Mã:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Vung, I As Integer, J As Integer, K As Integer, TenDL, TenCT, Mg()
TenCT = Split(ActiveSheet.Name)
If TenCT(0) = "Congtrinh" Then
ActiveSheet.[C5:J50000].ClearContents
For Each Sh In Worksheets
TenDL = Split(Sh.Name)
If TenDL(0) = "Daily" Then
Vung = Sh.Range(Sh.[C6], Sh.[C50000].End(xlUp)).Resize(, 8)
ReDim Mg(1 To UBound(Vung), 1 To 8)
For I = 1 To UBound(Vung)
If Vung(I, 8) = TenCT(UBound(TenCT)) Then
K = K + 1
For J = 1 To 7
Mg(K, J) = Vung(I, J)
Next J
Mg(K, 8) = TenDL(1)
End If
Next I
End If
[C50000].End(xlUp)(2).Resize(UBound(Mg), 8) = Mg
K = 0
Next Sh
End If
End Sub

3. Ở các sheet Đại lý dữ liệu được nhập có phần về quản lý xe chay. Mình muốn tạo 1 sheet "Xe chở" thống kê và tổng hợp các xe chạy hàng tháng.
Mã:
Đoạn code này mong bác nào giúp đỡ để hoàn thiện ^^


File đính kèm.
Quan ly cong trinh.xls
Mong các bác cao thủ về VB giúp đỡ. Cảm ơn rất nhiều