اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

وعليكم السلام ورحمة الله وبركاته ..

على حسب ما فهمت أن المقصود هو أكواد رسم الدوائر كما في ملفك المرفق ، صحيح ؟؟

طيب بدايةً .. وللتوضيح :-

إذا كانت الأعمدة تتغير ( ليس دائماً العمود 10 ) ، هنا أخي بلانك يمكنك إضافة معامل رابع للدالة DrawCircles لتحديد آخر عمود ، أو استخدام نطاق أكثر حيوية . لكن بناءً على الأكواد الحالية من ملفك المرفق ، أعتقد أن i = 10 و i >= 2 متغيران ثابتان لجميع الحالات . صحيح ؟؟

 

إذا كان ما فهمته صحيح .. فاستعمل ما يلي :-

الدالة الرئيسية :-

Sub DrawCirclesByFoksh(ByVal x As Integer, ByVal startRow As Integer, ByVal endRow As Integer)
    Dim Shp As Shape
    Dim i As Long, s As Long, n As Long
    Dim c As Range
    
    If x <= 0 Then Exit Sub
    
    i = 10
    n = 0
    
    Do While i >= 2
        For Each c In Range(Cells(startRow, i), Cells(endRow, i))
            If c.Value <> "" Then
                Set Shp = Sheet1.Shapes.AddShape(msoShapeOval, _
                    c.Left, c.Top, c.Width, c.Height)
                n = n + 1
                Shp.Fill.Visible = msoFalse
                Shp.Line.Weight = 1
                Shp.Line.ForeColor.SchemeColor = 10
                
                If n >= x Then Exit Sub
            End If
        Next c
        i = i - 1
    Loop
End Sub

 

ثم تستدعيها من خلال الزر وبتمرير المجموعات التي تريدها ولك الحرية في ذلك ، بهذا النمط :-

Sub AddCirclesMain()
    Call DrawCirclesByFoksh(Range("n9").Value, 10, 14)
    Call DrawCirclesByFoksh(Range("n17").Value, 18, 22)
    Call DrawCirclesByFoksh(Range("n25").Value, 26, 30)
End Sub

طبعاً ستستدعي الدالة AddCirclesMain في زر رسم الدوائر .

قام بنشر

الكود سلس وجميل .... هل أطمع في كرمك ان يتم وضع الدوائر بدءا من الحصة الاخيرة  لكل يوم اي كان موضع الحصة بمعنى كل يوم حصة  وعند الزيادة يبدأ في ملئ الحصص السابقة عكس الجدول . وعند زيادة الحصص عن 5 ايام يتم ملئ الحصص التي قبلها انظر الى الصورة المرفقه

1.png

2.png

3.png

4.png

قام بنشر

تمام .. استبدل الدالة الرئيسية بالتالية ، وجربها على ملفك بعد إزالة الدوائر السابقة طبعاً :-

Sub DrawCirclesByFoksh(ByVal x As Integer, ByVal startRow As Integer, ByVal endRow As Integer)
    Dim Shp As Shape
    Dim i As Long, r As Long, n As Long
    Dim c As Range
    
    If x <= 0 Then Exit Sub
    
    i = 10
    n = 0
    
    Do While i >= 2
        For r = endRow To startRow Step -1
            Set c = Cells(r, i)
            If c.Value <> "" Then
                Set Shp = Sheet1.Shapes.AddShape(msoShapeOval, _
                    c.Left, c.Top, c.Width, c.Height)
                n = n + 1
                Shp.Fill.Visible = msoFalse
                Shp.Line.Weight = 1
                Shp.Line.ForeColor.SchemeColor = 10
                
                If n >= x Then Exit Sub
            End If
        Next r
        i = i - 1
    Loop
End Sub

 

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   1 عضو متواجد الان

×
×
  • اضف...

Important Information