Nhờ các bạn/anh/chị giúp đoạn code vẽ đường tiến độ

Liên hệ QC

denell_tran

Thành viên mới
Tham gia
8/11/10
Bài viết
22
Được thích
1
Chào các anh/chị/các bạn,
Tôi xin nhờ mọi người giúp đỡ đoạn code để làm tiến độ, trước đây tôi cũng dùng ConditionFormat nhưng mà trông không đẹp và khá lằng nhằng.
Nay cóp nhặt được mấy đoạn code này, nhưng mà vì không chuyên sâu nên chạy chẳng được, mong mọi người giúp với ạ.
Ý muốn như thế này ạ. (Có file đính kèm).
Khi số liệu ở cột B và cột C thay đổi, thì code sẽ nhận biết để vẽ một đường biểu diễn tiến độ từ ngày bắt đầu đến ngày kết thúc bên cửa số hiển thị tiến độ.

Và nếu có thể thêm code để nếu có đường cũ, thì còn phải xóa đường cũ xong code sẽ vẽ đường mới ạ. (cái này nếu không được thì chấp nhận làm bằng tay - Xóa thủ công trước).

Xin mọi người giúp đỡ và chỉ bảo ạ.
 

File đính kèm

  • noi 1.xlsm
    18.7 KB · Đọc: 24
Lần chỉnh sửa cuối:
Bạn dùng code này nhé
Mã:
Sub VeTienDo()
Dim RngTimeLine As Range
Dim RngSoLieu As Range
Dim sPointX As Long, ePointX As Long, PointY As Long
Dim ClsTL As Range, ClsSL As Range

Set RngTimeLine = [E7:Q8]
Set RngSoLieu = Range("B8:B" & Range("B65536").End(3).Row)
'Xoa Shape
ActiveSheet.DrawingObjects.Delete
For Each ClsSL In RngSoLieu
    For Each ClsTL In RngTimeLine
        If ClsSL.Value2 = ClsTL.Value2 Then
            sPointX = ClsTL.Left
            ePointX = ClsTL.Offset(, ClsSL.Offset(, 1) - ClsSL + 1).Left
            PointY = ClsSL.Top + (ClsSL.Offset(1, 0).Top - ClsSL.Top) / 2
            'Ve Tien do
            ActiveSheet.Shapes.AddConnector(msoConnectorStraight, sPointX, PointY, ePointX, PointY).Select
            Selection.ShapeRange.Line.Style = msoLineThinThick
            Selection.ShapeRange.Line.Weight = 5
            Exit For
        End If
    Next
Next
End Sub
 
Upvote 0
@dhn46: mình vừa chạy thử, code chay chuẩn và rất nhanh. Cám ơn bạn rất rất nhiều. Chúc bạn luôn thành công.
 
Upvote 0
Web KT
Back
Top Bottom