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

دورة شرح الفيجول بيسك للتطبيقات VBA


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

الإستاذ محمد صالح جزاك الله خير

بالنسبة لتعين نوع بيانات المتغيرات نجدها كثيرة وأنت في شرح سابق في المشاركة رقم 95

لذلك نجد أن vba تحتوي على مجموعة من أنواع البيانات التي تحدد نوعية المتغيرات منها:

بينت لنا بعضاً منها ولكن لو تكرمت بشرح المزيد منها وخاصة التي تستعمل كثيراً أو ترشدنا إلى مرجع معين ربما نستفيد منه فجزاك الله خير

كذلك خصائص الكائنات نريد شرح الأهم منها والمتكررة غالبا في أغلب الكائنات حسبت ما تفضلتم بالإشارة إليها في مشاركتكم رقم 115

وللتعرف أكثر على الكائنات الموجودة في برنامج الإكسل وخصائصها ووظائفها

يمكنك استعمال مستعرض الكائنات object browser وذلك بالضغط على f2 في محرر الفيجوال بيسك

حيث تجد في الناحية اليسرى كل الكائنات الممكنة وبالضغط على الكائن المطلوب يظهر في الناحية اليمنى خصائصه ووظائفه التي يمكنك استعمالها

هذا والعفو منكم إعذرونا على جهلنا وقلة معرفتنا بهذا المجال والأعظم من ذلك ضعفنا في اللغة الإنجليزية فأرجو أن توسعوا لنا صدوركم فأنتم أهل الصدور الرحبة يا أوفسينا

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

السلام عليكم

اليوم سنقوم بعمل اختبار لتحديد مدى الاستفادة من الدورة

السؤال الاول:

قم بعمل ملف اكسل يحتوي على زر ماكرو به التنسيقات التالية

لون الخط احمر غامق ولون الخلية اصفر

السؤال الثاني :

بعد عمل الماكرو في السوال الاول

اجعل هذا الماكرو ينفذ هذه التنسيقات في اي خلية في ورقة العمل

السؤال الثالث:

قم بعمل كود لترحيل قيم الخلايا الموجودة في المدى (A2:D20) من الورقة 1 الى الورقة 2 والشرط هو لون الخلية وان يكون الترحيل مرتب

ملاحظة هامة

(لا يتم نقل او ترحيل المدى كامل وانما يتم شرط لون الخلية لترحيل بياناتها

بمعنى لو ان المدى ليس به الا خليتين لونهما احمر مثلاً يتم ترحيل هاتين الخليتين فقط ومهما كان موقعهما في المدى)

السؤال الرابع:

قم بعمل دالة جمع لثلاثة بارومترات

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

ملاحظة

يتم تنفيذ جميع الاجوبة في ملف واحد

وشكراً

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

السلام عليكم

اخي عل الخطيب

جوابك للسؤالين الاول والرابع صح

لكن الثاني والثالث خطاء

===

لا يتم نقل او ترحيل المدى كامل وانما يتم شرط لون الخلية لترحيل بياناتها

بمعن لو ان المدى ليس به الا خليتين لونهما احمر مثلاً يتم ترحيل هاتين الخليتين فقط ومهما كان موقعهما في المدى

حاول وستصل بإذن الله

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

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

اخواني الاعزاء

اشكركم جزيل الشكر على هذا الشرح المفصل

مرفق الاجابة علي الاسئله اتمني ان تكون صحيحه

usama123_test.rar

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

السلام عليكم

اخي اسامة

انت نفذت السوالين الاول والثاني بشكل صحيح

لكن يبدو انك لم تفهم المطلوب في السؤال الثالث (نرجو منك اعادة قراءته)

ام السوال الرابع انت عملت كود والمطلوب هو انشاء دالة حديدة

حاول وبإذن الله ستنجح

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

بس احنا ما اخذنا ترحيل بيانات بشرط ,,, انا ارحل خلايا فقط

تم حل السؤال الاول والثاني والرابع , اما الثالث فلا اجد حل بين ما اخذناه من معلومات حتى الان

ان شاء الله اجد الحل

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

استاذنا الله يعزك

ممكن وضع فى الاعتبار شرح اكثر طلبات الاعضاء عن الترحيل

ممكن وضع خطة لشرح الاتى من البداية

اولا الترحيل من خلية الى خلية فى نفس الصفحة

ترحيل من مجموعة خلايا لمجوعة اخرى

ثم ترحيل لصف ثم عدة صفوف

ثم ترحيل عمود ثم عدة اعمدة

ثانيا الترحيل الترحيل لورقة اخرى

من خلية لخلية ولعدة خلايا ثابتة ومتغيرة

ومن صف لصف ومن صفوف الى صفوف مدى ثابت ومتغير

ومن عمود لعمود والى عدة اعمدة

ثالثا الترحيل لاكثر من ورقة ايضا كل شئ

الترحيل من خلية الى خلية وعدة خلايا بالترتيب او غير ممرتبة

والصف لصف ولعدة صفوف

والعمود لعمود وعدة اعمدة

ثالثا كل ما سبق عبر الفورم

اى موسوعة ترحيل متكاملة

كل الاحترام

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

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

اخي عبدالله المجرب

شاكر لك اخي اهتمامك و المرجوا منك انت يكون نطاق الاسئله فيما شرح في هذه الدوره

مرفق محاوله اخري للحل ان شاء الله يكون بها المطلوب

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

usama123_test.rar

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

السلام عليكم

اولا الشكر الكثير لجميع الاساتذه على ماقدموه لنا من معلومات مفيدة وغزيرة

ثانيا هذه محاولة بسيطة للاجابة على الاسئلة ارجوا ان تكون صحيحة

وتقبلوا تحياتي .

اجابات موفقة ما عدا السوال الثالث (المطلوب ترحيل) وليس نسخ مدى بكامله

واقول لمن يقول ان السوال من خارج الدورة

لو تلاحظون بانه لا يكاد يمر يوم الا ويرد الاخوة على اسئلة ترحيل وهي من اكثر ما تم مناقشته وبعدة اشكال

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

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

اشكرك اخى فى الله أ/ عبدالله المجرب

اليك اجابتى واتمنى ان يكون صحيحا

السلام عليكم

إقول لك كما قلت لمن سبقك اجابات موفقة ما عدا السوال الثالث (المطلوب ترحيل)

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

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

اخي عبدالله المجرب

شاكر لك اخي اهتمامك و المرجوا منك انت يكون نطاق الاسئله فيما شرح في هذه الدوره

مرفق محاوله اخري للحل ان شاء الله يكون بها المطلوب

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

واقول لمن يقول ان السوال من خارج الدورة

لو تلاحظون بانه لا يكاد يمر يوم الا ويرد الاخوة على اسئلة ترحيل وهي من اكثر ما تم مناقشته وبعدة اشكال

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

===

بالنسبة للاجابات لديك

خطائين

السوال الثالث والرابع

بالنسبة للثالث المطلوب ترحيل

والرابع المطلوب ان تقوم بعمل دالة وليس ميكرو (راجع اجابات الاخوة الاخرين بخصوص هذا السوال)

==

اخواني عندما نضع سؤال مثل السوال الثالث

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

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

على العموم

اذا اردتم حذف هذا السؤال وتاجيل طرحه حتى يتم المرور على حلقات التكرار فالامر لكم

واشكركم جزيل الشكر على التفاعل والمحاولات

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

الأخ / عبد الله المجرب

بالنسبة للأسئلة الحمد لله تم حلها إلا السؤال الثالث

الصعوبة في الترحيل وخصوصاً الشرط حيث أول مرة الترحيل حسب لون الخلية

وحسبت ما فهمت وحاولت تنفيذه هو ترحيل بيانات الخلية ذات اللون الأحمرمثلا في الورقة1 إلى الخلية المقابل لها في الورقة 2

أتمنى أن يتوصل أحد الأخوان للحل

وهذا مرفق به حل الأسئلة الثلاثة الأخرى

شكراً جزيلاً أخي عبد الله حركت الهمم وسخنت الدورة في هذا الجو البارد جزاك الله خير

حل أسئلة الدورة.rar

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

السلام عليكم

اخي الشهابي

حل موفق ولو ان الجواب على السوال الثالث احتاج الى تدخل جراحي لكي يعمل ولكن محاولة ممتازة جداً جداً وبداية موفقة

والكود بعد التعديل في اكسل 2007


Sub abinshehab()

Sheets("ورقة2").Cells.ClearContents

For j = 1 To 4

For i = 2 To 20

    If Sheets("ورقة1").Cells(i, j).Interior.ColorIndex = -4142 Then

    Sheets("ورقة2").Cells(i, j).Value = Sheets("ورقة1").Cells(i, j).Value


End If

Next i

Next j

End Sub

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

الأخ / أبو أحمد كان الخلل حسب ما فهمت في تحديد القيمة Value

وتم تنفيذ كودك والحمد لله ولكن ما أردته هو الخلايا باللون الأحمر قمت بالتعديل في الكود هكذا



If Sheets("ورقة1").Cells(i, j).Interior.ColorIndex <> -4142 Then

الذي ما فهمته هو الرقم -4142 يمثل أي لون ولماذا لما اخترت رقم اللون الأحمر لم ينفذ الكود بهذا الشكل


If Sheets("ورقة1").Cells(i, j).Interior.ColorIndex = 255 Then

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

السلام عليكم

الاستاذ الحبيب عبدالله المجرب

هذه محاولتي لإجابة

أرجو أن أكون أصبت الهدف

محاولة 1 alidroos.rar

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

اخي الشهابي

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


Sub aa()

Cells(1, 1).Value = Cells(i, j).Interior.ColorIndex

End Sub

حيث قمت بتفعيل الكود بزر F8 وحصلت على الرقم السابق ========== الاستاذ الفاضل ابو نصار ما استطيع قوله هو استاذ ونرجو منك التكرم بشرح هذه الجزئية يا باشا

.Interior.Color = RGB(255, 255, 0)

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

السلام عليكم

استاذي الحبيب عبدالله المجرب حفظك الله

اشكرك على هذا التشجيع

بالنسبة لهذه الجزئية


Interior.Color = RGB(255, 255, 0)

اضن ماتقصده هو RGB تسلسل ارقام الألوان أحد طرق تعريف الألوان في VB و VBA رقم 255,0,0 رقم أساسي وتحصل منه على اللون الأحمر وأنا استخدمت تفرعه للون الأصفر واللي هوا 255,255,0 وزي ماتعرف بداية الارقام 1 اللي هوا لون اسود وانت جرب هذا الكود سوف توضح لك الصورة

Sub ali()

For A_c = 1 To 255

Range("A" & A_c).Interior.Color = A_c

Next A_c

End Sub

أو هذا الكود لسرد الألوان بطريقة غير منتظمة للمعلومية فقط

Sub ALI()

For E = 1 To 255

Range("A" & E).Interior.ColorIndex = Int(Rnd * 56) + 1

Next E

End Sub

وطريقة اخرى كالمستخدمة في الفورمز لتكن كالطريقة التالية للون الاحمر

Range("A1").Interior.Color = &HFF&

وهذا للون الأصفر

Range("A1").Interior.Color = &H80FFFF

ارجو ان تكون وضحت الصورة

والسلام عليكم

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

السلام عليكم

ما شاء الله عليك اخي ابو نصار مميز ومبدع بحق .............

.....................

مجرد مداخلة لاستخدام الالوان ...

هناك خاصيتين تستخدمان للتلوين في الاكسل ( لون الخلية او لون الخط أو ... أو ... ) وهما خاصيتي (Color ,ColorIndex )

الخاصية الاولى والمتعارف عليها هي خاصية (ColorIndex ) وتكون قيمها من 0 الى 65 وهي على النحو التالي :



Range("A1").Interior.ColorIndex = 19

اما خاصية (Color ) فهي خاصية اوسع واشمل عند استخدام الامر (RGB) .... جميع الالوان عبارة عن مزج ثلاثة الوان رئيسية وهي الاحمر (Red) و الاخضر (Green) و الازرق (Blue) وبالتالي الامر (RGB) هو مزيج الالوان السابقة (Red, Green, Blue) ويأخذ كل لون من الالوان السابقة القيم من 0 الى 255 وكلما زاد الرقم انخفض حدة اللون (وبلغة الاحتمالات ينتج لدينا أكثر من 16 مليون لون)


Range("A2").Interior.Color = RGB(200, 200, 200)

ونستطيع معرفة قيمة الارقام المقابلة لاي لون بالذهاب الى صندزق الالوان في الاكسل (لون الخط او لون الخلية) ثم نخنار (More Color) ثم نختار النافذة (custom) وسنجد في الاسفل خاصية (RGB) والارقام الثلاثة المقابلة للون المحدد

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

بصراحة يا جماعة درر منثورة لا تقدر بثمن الاستاذ أبو أحمد أتى بالدرر والاستاذ أبو نصار نثر الدرر والاستاذ الحسامي ختم الدرر

قمت بتطبيق طريقة أخينا أبونصار لتحديد لون الخلية

Interior.color = RGB(255, 0, 0)
ونجحت في كل الألوان فأظن إنها هي الأفضل والله أعلم حيث أنك تستطيع معرفة الأرقام الثلاثة وهي طريقة سهلة جداً كما أشار أستاذنا المبدع الحسامي جزاه الله كل خير من خلال تحديد الخلية ومن ثم الذهاب إلى أيقونة تلوين الخلية واختيار ألوان إضافية ومن ثم مخصص سنلاحظ الأرقم الثلاثة للألوان الثلاثة أحمر ، أخضر ، أزرق ونضعها في الكود وسوف يعمل إن شاء الله مثلاً
Interior.color = RGB(0, 176, 240)

فالصفر يمثل اللون الأحمر ، و176 يمثل اللون الأخضر ، و240 يمثل اللون الأزرق

بس في الطريقة الأولى كما أشأرتم أستاذناالحسامي

الخاصية الاولى والمتعارف عليها هي خاصية (ColorIndex ) وتكون قيمها من 0 الى 65

كيف نعرف أرقام الألوان فيها وجزاكم الله خير جميعاً

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

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

أود أولا أن أشكر كل من يتعاون ويساهم في هذه الدورة التي تدل على أن التعاون أساس التقدم

وأواصل مع أحبتي

الفصل الرابع في دورة فيجوال بيسك التطبيقات vba

نموذج كائن الإكسل excel object model

مقدمة نظرية

البرمجة التقليدية كانت لا تعتمد على أسلوب الكائنات فكان المبرمج يكرر الكثير من الأكواد لتحديد الكائن الذي يعمل عليه ولكن تغير الأمر بظهور البرمجة كائنية التوجه object oriented programming أو اختصاراً oop ولنتعرف أولا على معنى الكائن:

الكائن هو وحدة كاملة لها خصائصها وطرقها (أفعالها) فعلى سبيل المثال: الإنسان كائن له خصائصه ومنها اسمه وجنسه وطوله ولون شعره وهكذا وله أيضا أفعاله الخاصة به فالإنسان: يمشي يتحدث يسكت يقف يجلس وهكذا.

وكل تطبيق في الأوفيس له نموذج كائن خاص به يمكنك استخدامه من الفيجوال بيسك للتطبيقات vba والتحكم فيه بدءً من التطبيق ككل حتى أي خلية في أي ورقة عمل.

ويندرج تحت الكائن الرئيسي كائنات كثيرة فرعية (كخصائص للكائن الأكبر) وكل كائن له خصائصه وله طرقه (أفعاله) ويوجد في الإكسل أكثر من 200 كائن ولهم أكثر من 5000 خاصية وطريقة وبالتالي يصعب تذكرهم جميعاً وهنا يظهر دور مستعرض الكائنات object browser بالضغط على F2 من لوحة المفاتيح ، ويوجد أيضاً ما يسمى بمجموعات الكائنات collections وهي مجموعة من الكائنات التي لها نفس عدد الخصائص والطرق فمثلا: محمد و احمد ومحمود يمكن جمعهم في مجموعة الذكور مثل workbooks للتعامل مع مجموعة المصنفات المفتوحة و worksheets للتعامل مع أوراق عمل المصنف النشط أو أي مصنف يتم تحديده ، ولكن من أهم هذه الكائنات وأكثرها استخداماً: application التطبيق و workbook المصنف و worksheet ورقة العمل و chart التخطيط (الرسم البياني) و range المدى و dialog صندوق حواري.

وسوف نتحدث عن كل كائن من هذه الكائنات بصورة مختصرة:

* التطبيق application هو أول كائن وكل الكائنات الأخرى أبناء له ويمكن الاستغناء عنه في حالة وجود الخاصية المستعمله أو الطريقة ضمن الكائن عام <globals> في مستعرض الكائنات بمعنى أنه يمكنك استعمال أي من السطرين التاليين للتعامل مع الخلية النشطة.


application.activecell

أو

activecell

وبالنسبة للخصائص أو الطرق التي لا توجد ضمن العام <globals> يجب كتابة مسارها كاملاً بهذه الصورة فمثلا: (لإيقاف تحديث الشاشة)

Application.ScreenUpdating = False

ولن تحصل على النتائج المطلوبة إذا استعملت

ScreenUpdating = False

ويمكنك البدء في مدارسة خصائص وطرق أي كائن مثل application عملياً بكتابة اسم الكائن في بداية السطر ثم نقطة ستظهر قائمة بكل الخصائص والطرق المتاحة لهذا الكائن. (فقط يلزمك ترجمتها ومعرفة طريقة استخدامها وهذا ما ستتحدث عنه الفصول القادمة إن شاء الله في الدورة) * المصنف workbook للتعامل مع المصنف المفتوح ويمكنك استخدام مجموعة المصنفات workbooks المزيد من المعلومات في الفصل التاسع. * ورقة العمل worksheet للتعامل مع ورقة العمل المحددة ويمكنك استعمال مجموعة worksheets المزيد من المعلومات في الفصل العاشر. * المدى range للتعامل مع أي مدى حتى وإن كان خلية واحدة مثال: (للتعامل مع الخلية a1 )

range(“a1”)

المزيد من المعلومات في الفصل 11 * مربع الحوار dialog للتعامل مع مربعات الحوار الموجودة ضمن الإكسل ويمكن استعمال مجموعة dialogs فمثلا لعرض الصندوق الحواري الخاص بحفظ باسم save as نستخدم

Application.Dialogs(xlDialogSaveAs).Show

المزيد من المعلومات في الفصل 12 * التخطيط chart للتعامل مع الرسم البياني وتحديد خصائصه وأفعاله ممن خلال الكود المزيد في الفصل 13 === للتعامل مع الخصائص نستعمل الصورة العامة التالية: القيمة = الخاصية.الكائن مثال: لتغيير قيمة الخلية a1 إلى رقم 45

range(“a1”).value=45

=== للتعامل مع الطرق (الأفعال) نستعمل الصورة العامة التالية: باقي الخيارات الطريقة.الكائن مثال: لنسخ ورقة العمل الأولى بعد الثالثة

Worksheets(1).Copy After:=Worksheets(3)

=== للتعامل مع المجموعات يتم استعمال رقم (مسلسل - ترتيب) الكائن في المجموعة مثال: للتعامل مع ورقة العمل الثانية

worksheets(2)

******************************

وبإذن الله في الجانب العملي من هذا الفصل سوف نتناول ما يلي:

استخدام مستعرض الكائنات

إنشاء كائن

تغيير خصائص كائن

مقارنة الكائنات

استخدام طرق(أفعال ووظائف) كائن

عرض صناديق الحوار الموجودة ضمن الإكسل

=========

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

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

بس في الطريقة الأولى كما أشأرتم أستاذناالحسامي

الخاصية الاولى والمتعارف عليها هي خاصية (ColorIndex ) وتكون قيمها من 0 الى 65

كيف نعرف أرقام الألوان فيها وجزاكم الله خير جميعاً

اخي الشهابي الارقام تبداء من 0 الى 56 وليس 65 حسب علمي

ولتحصل عليها استعمل هذا الكود


Sub ColrIndx()

For i = 0 To 56

Cells(i + 1, 1).Interior.ColorIndex = i

Cells(i + 1, 1).Offset(0, 1) = i

Next

End Sub

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

زائر
هذا الموضوع مغلق.
×
×
  • اضف...

Important Information