Lớp Quản lý chất lượng GXD
LH: Ms.Huyền Thanh 0985.099.938
Kích để đăng kí học online
Lớp Đo bóc, lập Dự toán
LH: Ms.Thu An 0975.381.900
Kích để đăng kí qua mạng
Lớp Dự toán dự thầu, đấu thầu
LH: Ms.Thanh Mai: 0974.889.500
Kích vào đây đăng kí học
Lớp Thanh quyết toán GXD
LH: Ms.Huyền Thanh 0985.099.938
Kích để đăng kí học online

Giúp đỡ hoàn thiện bài toán về quản lý vật tư công trình trong công ty xây dựng nhỏ

y2k_mqm

Thành viên mới
Bài viết
2
Điểm thành tích
1

"Đâ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. :D. Trước khi làm mình cũng tìm trên google xem có cái nào giống cái mình đang thực hiện k để down về sài luôn nhưng k có đành phải làm. Hix.

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 đỡ :D.
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
 

alibabavn

Thành viên mới
Bài viết
1
Điểm thành tích
1
Đây là đoạn code mình chỉnh theo phần 1 và phần hai của bạn, bạn copy vào nhé.

--------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Vung, I As Integer, J As Integer, K As Integer, TenDL, TenCT, Mg()
If ActiveSheet.Name <> "Daily Mucluc" Then
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
End If


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

' Day la doan sep xep


If ActiveSheet.Name = "Congtrinh x" Or ActiveSheet.Name = "Congtrinh y" Or ActiveSheet.Name = "Congtrinh z" Then
Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _
"C5:C50000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With Worksheets(ActiveSheet.Name).Sort
.SetRange Range("C4:J19")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C5").Select


End If
End Sub
 

y2k_mqm

Thành viên mới
Bài viết
2
Điểm thành tích
1
Cảm ơn bác alibabavn rất nhiều. Thread bị move sang box khác, em lại cứ theo đường link cũ lên k biết bác cmt. Code của bác ổn rồi. Em copy vào phát chạy ngay. Nhưng do không hiểu về code của bác lắm nên nhờ bác edit lại cho cái này( hỏi hơi ngu tý) : bác sắp xếp lại cho em thành thứ tự ngày tháng tăng dần được k. Ở đây đang là thứ tự giảm dần :D. Or bác nào đọc bài em biết cmt luôn dùm em cái. Cảm ơn các bác nhiều nhiều
P/s: Do là bài toán của em còn có thêm nhiều sheet" Công trình ...." nữa lên có cách nào ta có thể bắt sự kiện 1 cách tổng quát không. Tức là khi tạo một sheet có tên bắt đầu là"Công trình..." thì code tự bắt vào công trình đó ấy ạ.
Mã:
If ActiveSheet.Name = "Congtrinh x" Or ActiveSheet.Name = "Congtrinh y" Or ActiveSheet.Name = "Congtrinh z"
( thế này nghĩa là mỗi lần em thêm 1 sheet thì lại phải vào vb sửa code ạ)
 

excel2050

Thành viên năng động
Bài viết
51
Điểm thành tích
8
Thấy cái này có vẻ cũng thú vị đấy. Nhưng hỏi chủ toppic phát là thay vì viết VBE thì lập công thức thì sao?
 

Tải bộ cài phần mềm Dự toán GXD, Đấu thầu GXD, Thanh Quyết toán GXD, Quản lý chất lượng GXD. Dành cho người mua bản quyền
Kích để xem khóa học Dự toán công trình
Kích để xem khóa học Dự toán công trình
Hãy kích để tới bài giới thiệu Khóa học Đọc bản vẽ và đo bóc khối lượng
Phần mềm quản lý chất lượng công trình QLCL GXD
Tìm hiểu khóa học Thanh Quyết toán GXD
Top Bottom