اذهب الي المحتوي
أوفيسنا

شرح اعداد كشوفات مدرسية باختيار روؤس الاعمدة عن طريق فورم


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

p3.gif

اعداد كشوفات مدرسية باختيار روؤس الاعمدة عن طريق فورم

بطريقة ابسط للفهم وسهولة نقلها الى اي ملف مع تضبيط الطباعة

مع الشرح

اعداد كشوفات مدرسية باكواد سهلة التغيير والتي تجعل استخدامه ونقلة الى ملف آخر

للعمل عليه بشكل مبسط

وتتم التغييرات في مكان واحد في اول الكود

هنا :

'======================================================

'  اول صف للتقرير

Private Const iRow As Integer = 4

'------------------------------------------------------

'  اسم ورقة التقارير

Private Const Sh_Report As String = "التقرير"

'------------------------------------------------------

'  اسم ورقة البيانات

Private Const Sh_MyDate As String = "بيانات اساسية"

'------------------------------------------------------

'  تعيين نطاق الخلايا في ورقة البيانات

'        ويشمل رؤوس الاعمدة

Private Const MyRng_MyDate As String = "A5:X1000"

'======================================================

ويمكن يستخدم لاي كشوفات وتقارير او غيره

و ساقوم بشرح هذا العمل

على شكل دفعات رويدا رويدا

وسوف نبدأ اليوم بارفاق الملف

وسيتبعه الشرح ان شاء الله

خبور خير

اعداد تقارير مدرسية.rar

  • Like 4
رابط هذا التعليق
شارك

السلام عليكم

const

هو عبارة عن ثابت خاص بالمستخدم

const اسم الثابت as نمط البيانات = تعبير

Const iRow As Integer = 4

يحب الانتباه للتالي:

1 -- لا يمكن ان يكون عرضا ونمطا خاصا بالمستخدم

2 -- لا يمكن ان يكون تابعا معرفا من قبل المستخدم او تابعا محجوزا في Visual Basic

p39.gif

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

شرح لكيفية اضافة عناصر الى فورم

Private Sub UserForm_Initialize()

    Dim MyOptionButton As Control

    Dim MyTop As Integer, i As Integer

    ' اول توب للاضافة

    MyTop = 18

    For i = 1 To 5

        ' اضافة شيك بوكس بعدد السلسلة في المتغير

        ' i

        Set MyOptionButton = Me.Controls.Add("Forms.OptionButton.1")

        With MyOptionButton

        ' اين يوضع الشيك بوتن

        '

        '.Move Left, Top, witdh, Height

            .Move 18, MyTop

            'موقع التشييك باليمين

            .Alignment = 0

            'اللون

            .BackColor = &HFFC0C0

            'عرض الخط

            .Font.Bold = True

            'ما يكتب عليه

            .Caption = "خبور  " & i

            'الكتابة من اليمين

            .TextAlign = fmTextAlignRight

            'يشيك الشيك بوتن i=1 اذا كانت

            If i = 1 Then .Value = True

        End With

            'يتغير الموقع بمقدار 30

        MyTop = MyTop + 30

    Next

End Sub

في المرفق مثالين لذلك مع الشرح داخل الكود

تقبلوا تحياتي وشكري

Add_Controls.rar

  • Like 1
رابط هذا التعليق
شارك

الفاضل خبور

معادلة التسلسل

=SUBTOTAL(3;$B$6:B8)
معلومة قيمة لكن هل المعادلة
=row()-5

و نسحبها لأسفل

تقوم بنفس المهمة ؟

أم أن للأولى ميزة عليها ؟

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

أخى خبور

أثناء المذاكرة و البحث

توصلت لكود مشابه

لإضافة تسميات و مربعات نصوص للفورم

ما رأيك فيه

Private Sub UserForm_Initialize()

  k = ScrollBar1.Value

       label55.Caption = "ÑÞã :  " & k

 lcol = Sheets(1).Range("ff1").End(xlToLeft).Column

            Dim chkbox As Control

            Dim txtbox As Control

For i = 1 To lcol

            Set chkbox = Me.Controls.Add("Forms.label.1", "label" & i, True)

            chkbox.Left = Me.Width - 70

            chkbox.Top = 1 + (i * 20)

            chkbox.Width = 60

            chkbox.Height = 15

            chkbox = True

            Set txtbox = Me.Controls.Add("Forms.textbox.1", "textbox" & i, True)

            txtbox.Left = Me.Width - 160

            txtbox.Top = (i * 20)

            txtbox.Width = 90

            txtbox.Height = 20

           Next i


         ScrollBar1.Value = 1

          k = ScrollBar1.Value

           For j = 1 To lcol

                    With Me.Controls("label" & j)

                            .Caption = Sheets(1).Cells(1, j).Value

                            .TextAlign = fmTextAlignCenter

                            .Font.Bold = True

                            .Font.Size = 10

                            .FontName = "Times New Roman"

                            .ForeColor = vbRed

                    End With

                With Me.Controls("textbox" & j)

                            .Text = Sheets(1).Cells(k, j).Offset(1, 0).Value

                            .TextAlign = fmTextAlignCenter

                            .Font.Bold = True

                            .Font.Size = 10

                            .FontName = "Times New Roman"

                End With

        Next j


End Sub

لو سمحت شاهد المرفق

وقل رأيك فيه

جارى رفع فديو أيضا

الديناميكى التام لاستعراض السجل وحفظ التغييرات.zip

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

الفاضل خبور

معادلة التسلسل

=SUBTOTAL(3;$B$6:B8)
معلومة قيمة لكن هل المعادلة
=row()-5
و نسحبها لأسفل تقوم بنفس المهمة ؟ أم أن للأولى ميزة عليها ؟
المعادلة:
=SUBTOTAL(3;$B$6:B8)

ستعطيك تسلسل تلقائي من العدد واحد اثناء الفلترة

علشان يظهر التسلسل في التقرير بشكل مرتب من 1 الى آخر رقم

رابط هذا التعليق
شارك

أخى خبور

أثناء المذاكرة و البحث

توصلت لكود مشابه

لإضافة تسميات و مربعات نصوص للفورم

ما رأيك فيه

جميل جدا

ولكن لكي يعمل الملف بشكل صحيح

اجعل ورقة1 هي الاولى في الترتيب

اسحبها الى اليمين

او احذف ورقة مخطط

شاهد التعديل

الديناميكى التام لاستعراض السجل وحفظ التغييرات.rar

رابط هذا التعليق
شارك

نعم المخطط

كنت أسجل الفديو على الملف للشرح

مفتاح f10 ينهى التسجيل فى برنامج الشرح كمتاسيا ستوديو

فى نفس الوقت هو اختصار لإنشاء صفحة مخطط

جزاك الله خيرا

لكن ما سر إضافة مربعات الاختيار لحاوية أو إطار

وليس للفورم مباشرة

رابط هذا التعليق
شارك

لكن ما سر إضافة مربعات الاختيار لحاوية أو إطار

وليس للفورم مباشرة

اذا كان عدد الشيك بوكس اكثر من الكم الذي سيظهر في واجهة الفورم

ماذا ستفعل حينها؟

يجب ان تظهر شريط التمرير للفورم

واذا كان شريط التمرير في الفورم

ونزلت الى الاسفل سيختفي زر الاضافة

لذا قمنا باضافة فرمة

للخروج من الاشكالات لمذكورة اعلاة

وجعلنا اضافة الشيك بوكس داخلها

رابط هذا التعليق
شارك

السلام عليكم

شاهد الملفين في المرفق التالي

ايهما افضل

لقد قمت بعملهما من سابق

وهما لاضافة اوراق المصنف لفورم

خبور خير

اضافة اسماء الاوراق الى فورم.rar

رابط هذا التعليق
شارك

أستاذى القدير

خير جواب على كلامك

أننى نفذت نفس الملف

لكن مع فريم

نحن نذاكر ونعمل الواجب بالمرفق

السؤال التالى

كيف نجعل الفريم مطاطا

حسب عدد اللافتات و مربعات النصوص ؟

كلما زادت مربعات النصوص

زاد ارتفاع الفريم حسب الحاجة

يخيل لى هذا تحدى لنا

كى نفهمه

جزاك الله خيرا

الديناميكى التام لاستعراض السجل وحفظ التغييرات مع الفريم.zip

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

السلام عليكم

الاخت الفاضلة ايناس __________ حفظها الله

رمضان كريم وكل عام وأنت بألف خير

جزاك الله خبرا

شكرا جزيلا

------------------------------

السؤال التالى

كيف نجعل الفريم مطاطا

حسب عدد اللافتات و مربعات النصوص ؟

كلما زادت مربعات النصوص

زاد ارتفاع الفريم حسب الحاجة

شاهد المرفق

بثلاثة امثلة للبيانات باعمدة مختلفة

وقد قمت ببعض التعديلات في الكود ليفهم سريعا

خبور خير

الديناميكى التام لاستعراض السجل وحفظ التغييرات مع الفريم1.rar

رابط هذا التعليق
شارك

أستاذنا الفاضل

جارى دراسة الملف

والله يعين

تم فهم جزئية

كيف نجعل الحاوية مطاطة

بهذا السطر

Frame1.ScrollHeight = (lcol * MyTop) + MyFrame_Top

فما فائدة هذا السطر
If Frame1.ScrollHeight > Frame1.Height Then Else Frame1.SpecialEffect = 0

ثانيا لماذا وضعنا هذه المتغيرات هنا
Option Explicit

Private lcol As Integer

Private k As Integer

و جزاك الله خيرا

رابط هذا التعليق
شارك

فما فائدة هذا السطر

If Frame1.ScrollHeight > Frame1.Height Then Else Frame1.SpecialEffect = 0

في ورقة مثال2

افتح الفورم وشاهده

ثم اعمل شرطة امام هذا السطر حتى لا يستخدم في الكود

وافتح الفورم مره اخرى

ستجد ان حدود الفرمة موجودة

هذا السطر من الكود يقوم بعدم اظهارها

هذه من النواحي الجمالية

ثانيا

لماذا وضعنا هذه المتغيرات هنا

Option Explicit
Private lcol As Integer
Private k As Integer

اولا عندما نستخدم Option Explicit

في اي وحدة نمطية

يجب ان نصرح على جميع المتغيرات فيها

(dim , public ,private.....الخ)

وعندما نجعلها في بداية الوحدة النمطية لن نعيد تكرارالتصريح عنها

في اي كود من اكواد الوحدة النمطية نفسها

ولكن ممكن نعيد ربطها بالقيمة مرة اخرى بسبب تغير هذه القيمة

ومثال على ذلك المتغير k

ولكن المتغير lcol

قمنا بربطة بالقيمة في الكود الافتتاحي للفورم

وقمنا باستخدامة في باقي الاكواد بدون اعادة ربطه بالقيمة

 

رابط هذا التعليق
شارك

السلام عليكم

--
أولا : هذا السطر هناك مشكلة لدى فى فهم الجملة الشرطية

If Frame1.ScrollHeight > Frame1.Height Then Else Frame1.SpecialEffect = 0

أقصد هذا الجزء بالتحديد

Then Else

تعودنا - أو أنا تعودت على الأصح - أن يأتى بعد then جواب الشرط و ليس else

فما ترجمة هذا ؟
يعنى متى يكون SpecialEffect = 0 ؟


----

ثانيا :
سؤال عن ارتفاع اللافتة و مربع النص
هل هى افتراضية = 20
يعنى لما نطلب بالكود إدراج لافتة فإن ارتفاعها افتراضيا يكون 20 ؟
لأنى لم أجد أى ذكر لهاهنا فى الكود
-----
 

رابط هذا التعليق
شارك

السلام عليكم

 

تعودنا - أو أنا تعودت على الأصح - أن يأتى بعد then جواب الشرط و ليس else

فما ترجمة هذا ؟


if الشرط then جواب الشرط else عكس جواب الشرط

انا اريد عكس جواب الشرط

احيانا في بعض الاكواد ( ليس في كودنا هذا ) لا تجد الا شرطا واحدا ولكنك تريد عكسه
فممكن استخدام الجملة اعلاة

وايضا يمكنك استخدام التعبير التالي:
 

If Not (Frame1.ScrollHeight > Frame1.Height) Then Frame1.SpecialEffect = 0


==================================================================
 

ثانيا :
سؤال عن ارتفاع اللافتة و مربع النص
هل هى افتراضية = 20
يعنى لما نطلب بالكود إدراج لافتة فإن ارتفاعها افتراضيا يكون 20 ؟
لأنى لم أجد أى ذكر لهاهنا فى الكود


الارتفاع الافتراضي هو 18
والعرض الافتراضي هو 72

انا لم اذكر الارتفاع لانني اريد القيمة الافتراضية

شاهد المرفق فيديو يوضح القيمة الافتراضية
اثناء الاضافة


خبور خير

Add_le.rar

رابط هذا التعليق
شارك

ما شاء الله أستاذنا

لقد تحول هذا الموضوع لما يشبه المدرسة

معلمها قدير

غزير العلم

و على فكرة

أكثر الناس ليس لديهم صبر على تعلم مثل هذا

حتى أننى وجدت متخصصين من خريجى كليات الحاسب

لا يعرفون معنى فجوال بيسك للتطبيقات و هذا أمر عجيب

لك أن تتخيل النقلة الكبيرة التى سننتقل إليها فى عالم البرمجة

بفضل الله

ثم بفضلك

بعد كل غامضة تزيل غموضها

و نفهمها بعد أن كانت طلاسم

وأنا أكتب هذه السطور

4 أعضاء يشاهدون الموضوع

و13 زائرا ( هؤلاء الذين أخبرتك عنهم)

لك أن تحتسب الأجر عند الله

ولك منا الدعاء

--

نرجع للعمل

---

قد فهمت كل ما تفضلت به

إذن

then else = if not

تمام

لو أحببنا زيادة ارتفاع الكنترولات عن 18

لازم نرفع mytop

و نساوى كل ارتفاعات الكنترولات

صحيح

وقد جربت ذلك و فهمته و الحمد لله

جارى مشاهدة الفديو

وجزاك الله خيرا

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

الفديو ممتاز

إدراج كنترولات عن طريق النقر المزدوج و ليس برسمها

افتراضيا ارتفاعها 18

تمام

وقد رأيت أنك سجلت الفديو خصيصا لتوضح لنا

وهذا كرم منك

جزاك الله خيرا

رابط هذا التعليق
شارك

السلام عليكم

نواصل العمل

----

هناك مشكلة فى ظهور التاريخ فى مربع نص

حيث يظهر بترتيب التاريخ الأميركي

من اليمين

سنة - يوم - شهر

image001.jpg

مع أن الحروف عربية

يمكننا استخدام الأمر

format

قبل ملء مربع النص بقيمة التاريخ الموجود بخلية فى الشيت

لكن المشكلة

أن مربع النص هذا

يملأ عن طريق حلقة مع أكثر من عشرين مربع نص

فلا نستطيع استخدام أمر

format

داخل الحلقة

لأن مربعات النصوص ليست كلها تواريخ

كيف نعدل مربع النص هذا وحده

بحيث تكون صيغة التاريخ فيه

من اليمين

يوم - شهر - سنة

====

جزاك الله خيرا أستاذنا خبور

و هذه هى الحلقة التى تملأ مربعات النصوص

 Me.Controls("Textbox" & j).Value = Worksheets("all").Cells(k + 3, j).Offset(1, 0).Value

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

السلام عليكم

كيف نعدل مربع النص هذا وحده

بحيث تكون صيغة التاريخ فيه

من اليمين

يوم - شهر - سنة

بعد الخروج من الحلقة

كرر اضافة التاريخ بالفورمات التي تريدها

في التاكست الذي تريد اظهار التاريخ فيه

يعني لوكان رقم التاكست 5

Me.Controls("Textbox5").Value = Format(Worksheets("all").Cells(k + 3, 5).Offset(1, 0), "yyyy/mm/dd")

جرب واشعرنا بالنتائج

خبور خير

رابط هذا التعليق
شارك

من غير ما أجرب

يكفى نصاعة الفكرة

وجمالها

هذه هى خبرات و حيل المبرمجين التى نحتاجها

جارى التجربة

و هذه هى النتائج

و إن كانت بالأرقام العربية ( المتعارف عليها أنها إنجليزية )

image001.jpg

لكن التاريخ مرتب

جزاك الله خيرا

و هذه حيلت لتعريب الأرقام

أى جعل الأرقام هندية

Me.Controls("Textbox3").Value = "الحمد لله"

Me.Controls("Textbox3").Value = Format(Worksheets("all").Cells(k + 3, 3).Offset(1, 0), "yyyy/mm/dd")

يعنى جعلت النص فى المربع حروفا عربية

قبل جملة تغيير الفورمات

انظر النتائج

image001.jpg

مازلنا نتعلم منك الكثير

بارك الله فيك

أرجو من كل شخص يمر على الموضوع و لا يكتب ردا

أن يدعو لك

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

هذا كود ينفذ الآتى

1 - رأس الصفحة الأيسر = رقم الكشف

2 - التذييل الأيمن = كلمة " اللجنة "

3 - التذييل الأيسر = كلمة " مدير المدرسة " + مرجع لاسم المدير نفسه

ضع الكود فى workbook -- open

Private Sub Workbook_Open()

          With Sheets("هنا اسم الشيت الذى فيه البيانات").PageSetup

                        .LeftHeader = "&""-,غامق""&12كشف رقم  : &P"

                        .LeftFooter = "&""-,غامق""&16مدير المدرسة" & " / " & Sheets(1).Range("f7")

                        .RightFooter = "&""-,غامق""&16اللجنة :"

            End With

End Sub

تم تعديل بواسطه kemas
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information