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

( موضوع مميز ) معالم على طريق البرمجة بلغة VBA


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

بسم الله

والصلاة والسلام على رسول الله

اللهم علمنا ما ينفعنا ،،، وانفعنا بما علمتنا ،،،

ووفقنا للعلم النافع ،، ولما تحبه وترضاه عنا ،،،

وبعد ،،،،

فالسلام عليكم

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

والله يعلم أنني مشتاق لكم ،،،،

فعلى بركة الله نفتتح بهذه المشاركة المتواضعة والمباركة بحول الله وقوته الا وهي :

معالم على طريق البرمجة بلغة VBA

الفكرة :

- سنقوم بتدوين بعض الأكواد البسيطة التي تنير لنا جميعاً الطريق للبرمجة بلغة الـ VBA :

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

و أتمنى من الجميع أن يشاركوني هذا العمل حتى تكتمل الفائدة للجميع

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

بسم الله نبدأ :

اكواد تخص كائن التطبيق :

كود:


Sub zezo()

Application.Caption = "ziad ali"

End Sub
يقوم الكود بتوظيف الخاصية Caption على كائن التطبيق أي أن هذه الخاصية تقوم بتغيير الاسم العام للبرنامج فبدلا من كلمة مايكرسوفت سيظهر ziad ali ... كود:

Sub zezo2()

Application.DisplayFormulaBar = False

End Sub
تقوم هذه الخاصية DisplayFormulaBar بإخفاء شريط الصيغ عند استخدام False ،، وبالمقابل إظهاره عند استخدام …TRUE كود:

Sub zezo3()

Application.DisplayFullScreen = True

End Sub
تقوم هذه الخاصية DisplayFullScreen بجعل التطبيق في وضع ملء الشاشة وللرجوع طبعاً يجب ان نجعل القيمة False .. كود:

Sub zezo4()

Application.DisplayRecentFiles = False

End Sub
تقوم هذه الخاصية DisplayRecentFiles بعدم عرض المستندات الأخيرة في كائن تطبيق اكسيل وإذا أردنا إستعراضها طبعاً نجعلها تاخد القيمة TRUE .كالتالي : كود:

Sub zezo5()

Application.DisplayRecentFiles = True

End Sub
تقوم هذه الخاصية WindowState بتحديد حالة كائن التطبيق من حيث التكبير والتصغير والوضع الطبيعي كود:

Sub zezo6()

Application.WindowState = xlMaximized

End Sub
كود:
Sub zezo7()

Application.WindowState = xlMinimized

End Sub
كود:
Sub zezo8()

Application.WindowState = xlNormal

End Sub
================================================================================================= اكواد تخص كائن ورقة العمل: كود:

Sub zezo9()

Worksheets("sheet1").Visible = False

End Sub
يقوم الكود بإخفاء ورقة العمل المسماه sheet1 كود:
Sub ZEZO10()

Worksheets("sheet1").Visible = True

End Sub
يقوم الكود بإظهار ورقة العمل المسماه sheet1 كود:

Sub zezo11()

Worksheets(1).Name = "sheet1"

End Sub
يقوم الكود بإعادة تسمية الورقة 1 في ترتيب اكسيل بـ sheet1 كود:
Sub zezo12()

Worksheets("sheet1").Delete

End Sub
يقوم الكود بحذف الورقة المسماه sheet1 كود:

Sub zezo13()

Worksheets(1).Activate

End Sub
يقوم الكود بتنشيط الورقة المسماه sheet1 كود:

Sub zezo14()

Worksheets.Add

End Sub
يقوم الكود بإضافة ورقة جديدة كود:

Sub zezo15()

Worksheets(3).Copy

End Sub
يقوم الكود بنسخ الورقة الثالثة ضمن ترتيب ورقات المصنف ... =============================================================================================== والأن مع الأكواد الشائعة للإشارة لهذا الكائن المسمى RANGE : الكائن من نوع النطاق أو ما يسمى بالمدى أو المجال وهو الأكثر شيوعاً ، أي أن أغلب الأكواد تشير بكثرة لهذا النوع من الكائنات ،،،: كود:

Sub zezo16()

Range("d2:i10").Select

End Sub
يقوم الكود بتحديد المجال المشار إليه بين القوسين كود:

Sub zezo17()

Range("d2:i10").Columns(2).Select

End Sub
يقوم الكود بتحديد العمود الثاني بالمجال المشار إليه بين قوسين كود:

Sub zezo18()

Range("b10:f15").Columns(2).Value = 0

End Sub
يقوم الكود بكتابة قيمة صفر في العمود الثاني من المجال المحدد بين القوسين كود:

Sub zezo19()

Range("c5:c10").Rows(1).Value = 100

End Sub
يقوم الكود بكتابة قيمة 100 في الصف الأول من المجال المحدد بين القوسين وهو هنا الخلية C5 كود:

Sub zezo20()

Range("d2:i10").Cells(2, 3).Select

End Sub
يقوم الكود بتحديد الخلية الواقعة في الصف الثاني من العمود الثالث داخل المجال المحدد بين القوسين وهي هنا الخلية F3 كود:

Sub zezo21()

Range("f10:i15").Cells(3, 2).Value = 200

End Sub
يقوم الكود بكتابة قيمة 200 بالخلية الواقعة في الصف الثالث من العمود الثاني داخل المجال المحدد بين القوسين وهي هنا الخلية G12 كود:

Sub zezo22()

Worksheets(3).Range("f1:h5").Value = 100

End Sub
يقوم الكود بكتابة قيمة 100 في المجال المحدد من الورقة الثالثة من أوراق المصنف كود:

Sub zezo23()

Range("d2:i10").Clear

End Sub

يقوم الكود بمسح محتويات المجال المشار إليه بين قوسين

والله من وراء القصد

============================ يتبع بإذن الله=======================

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

السلام عليكم

ألف حمد لله على سلامتك وعودتك أستاذ الإبداع في أرض الإبداع زياد علي

عوداً حميداً مباركاً

إذا كانت العودة دائما بهذا العبق من الشروحات التي تقول للشمس أبعدي عني

فنتمنى أن تغيب كل يوم وتعود كل يوم

ونذكرك بتوقيع أستاذنا العزيز طارق إذا هبت رياحك فاغتنمها فلا تدري متى يأتي السكون

جعلك الله مشعلاً للعلم ونورا لا ينطفأ

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

السلام عليكم جميعاً

اخي ابو خليل

اختي نور الرحمة

اخي شريف

اخي خالد القدس

جزاكم الله عني خير الجزاء

بهذا الكلام الطيب

ويا اخي خالد القدس ،، لقد اخلجلتم تواضعاً بهذا الكلمات الجميلة والتي اتمنى أن تكون قد صادفت أهلها

لك مني كل المودة والتقدير ،،،

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

أتمنى من الجميع إثراء المشاركة بوضع الأكواد التي تعلموها مع شرح بسيط للكود ،،،

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

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

أخي الحبيب / زياد علي

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

أخوك

أبو عبدالله

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

تسلم الأيادي يا أخ زياد

وربنا يجعلك دايما في ازدياد

ويبارك في أهلك والأولاد

ويرزقك حب العباد

أخوك أبو البراء

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

السلام عليكم

اخي ahmfasil2009

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

http://www.officena.net/ib/index.php?showtopic=12203&st=0&p=52207&#entry52207

اخي أبوعبدالله

بورك فيك وجزاك الله عنا كل خير ،،، على هذه الكلمات الطيبة ،،،ويعلم الله أن لك معزة خاصة لدي يا استاذي الفاضل ،،، شكراَ شكراً لك،

و بالمناسبة لقد ارسلت اليك ايميل خاص يوم أمس،،،

اخي ياسر خليل

الله يجزيك الجنة على هذا الدعاء الطيب أخي الحبيب ،،،

بارك الله مروركم الطيب هذا

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

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

والأن عودٌ على بدء :

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

و لا يزال الحديث مستمراً عن الكائن من نوع RANGE

ملاحظة :

ممكن الاستغناء فيما يلي من الأكواد عن عبارة :

Worksheets(3).
وذلك بذكر المجال مباشرة ،،،، =======================================================================
Sub zezo24()

Worksheets(3).Range("a1:c10").Font.Bold = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم بأختيار خاصية bold تغليظ الخط
Sub zezo25()

Worksheets(3).Range("a1:c10").Font.Italic = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار خاصية Italic إمالة الخط
Sub zezo26()

Worksheets(3).Range("a1:c10").Font.Underline = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار خاصية Underline وضع خط تحت البيانات
Sub zezo27()

Worksheets(3).Range("a1:c10").Font.Name = " Arabic Typesetting" 

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار نوع الخط Arabic Typesetting
Sub zezo28()

Worksheets(3).Range("a1:c10").Font.Size = 18

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار حجم الخط 18
Sub zezo29()

Worksheets(3).Range("a1:c10").Columns(1).Font.Size = 18

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالعمود الأول فقط قم باختيار حجم الخط 18
Sub zezo30()

Worksheets(3).Range("a1:c10").Rows.Font.Bold = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف لجميع صفوف المجال قم باختيار خاصية bold تغليظ الخط
Sub zezo31()

Worksheets(3).Range("a1:c10").Rows(3).Font.Bold = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالصف الثالث فقط قم باختيار خاصية bold تغليظ الخط
Sub zezo32()

Range("f20:i25").Cells.Font.Italic = True

End Sub
عند المجال المحدد من الورقة الثالثة في أوراق المصنف بجميع الخلايا قم باختيار خاصية Italic إمالة الخط
Sub zezo33()

ActiveCell.Formula = "=C1+D2"

End Sub

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

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

أتمنى من الجميع إثراء المشاركة بوضع الأكواد التي تعلموها مع شرح بسيط للكود ،،،

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

وفقنا الله واياكم لما يحب ويرضاه

مودتي للجميع

===========================يتبع ان شاء الله====================================

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

السلام عليكم

اخي الحبيب خالد القدس

دائماً منورنا والله بردودك البهية العطرة

والحكاية كلها اننا نريد التدرج بالأعضاء ممن ليس له أي دراية بالبرمجة

فحبة حبة

اخي الحبيب alshamal

وفيك بارك الله

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

وبارك الله في الجميع

اخي dddd

ده نورك والله هو اللي أكثر إشراق ،،، أخي الحبيب بارك الله فيك على المرور الطيب

شكراً شكراً ،،، وبارك الله في الجميع

مودتي وتقديري للجميع

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

بسم الله

والصلاة والسلام على رسول

السلام عليكم

والأن عودُ على بدء :

لا زال الحديث قائماً عن كيفية الإشارة إلى الكائن من النوع نطاق أو مدى RANGE

فيرجى زيادة درجة الانتباه فيما يلي :

بسم الله نبدأ :

Sub zezo34()

Range("h10").FormulaR1C1 = "=r[-1]c[-1]+r[1]c[1]"

End Sub
لإدراج المعادلة بمقدار إزاحة اقل من صف وعمود لليمين + إزاحة اكبر من صف وعمود لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة G9+I11
Sub zezo35()

Range("h10").FormulaR1C1 = "=r[-2]c[-1]"

End Sub
لإدراج المعادلة بمقدار إزاحة اقل من صفين وعمود لليمين للخلية المختارة وهي ستكون قيمة الخلية G8
Sub zezo36()

Range("h10").FormulaR1C1 = "=rc[1]+rc[2]"

End Sub
لإدراج المعادلة بمقدار إزاحة أكبر من صف وعمود – لليسار- + إزاحة اكبر من صفين عمودين لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة I10+J10 =============================================== ممتاز ممتاز ،،، إذا استوعبنا ما سبق فأنه من السهل استيعاب القادم بإذن الله :
Sub zezo37()

Worksheets(3).Range("H10").Offset(1, 2).Value = 100

End Sub
لإدراج القيمة 100 بمقدار إزاحة زائد عمودين لليسار وصف من الخلية المختارة وهي ستكون الخلية J11 والأن مع جمال الإختصار في برمجة الأكسيل فبدلاً من الأسطر المتعددة يمكن الإشارة للمجال المختار بهذه الجملة البسيطة WHIT : وهي جملة تستخدم لتخصيص المجال المحدد ،،، أي عند المجال المعين بالخاصية المطلوبة افعل كذا : ............... ............... ............... مجموعة من الأوامر
Sub zezo38()

With Worksheets(3).Range("A1:h10").Font

.Bold = True

.Italic = True

.Underline = True

.Name = "ARIAL"

.Size = 20

End With

End Sub
استخدمنا خاصية WITH لتخصيص المجال المحدد بالخاصية المطلوبة FONT لعمل ما يلي من أوامر بعد سطر التخصيص ويجب إنهاء جملة التخصيص WITH بجملة END WITH ===========================================================================
Sub zezo39()

Worksheets(5).UsedRange.Font.Size = 16

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

Worksheets(3).Range("a1").CurrentRegion.Font.Size = 16

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

Worksheets(3).Range("C2:G10").BorderAround ColorIndex:=5

End Sub
يقوم الكود بإحاطة المجال المختار بحدود باللون الأزرق
Sub zezo42()

Worksheets(3).Range("C2:G10").Interior.ColorIndex = 6

End Sub

يقوم الكود بتلوين المجال المحدد باللون الأصفر

وعلى ذكر ColorIndex قد يتسأل البعض كيف يمكن معرفة رقم اللون المختار ؟؟؟

الصورة المرفقة توضح ذلك :

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

أتمنى من الجميع إثراء المشاركة بوضع الأكواد التي تعلموها مع شرح بسيط للكود ،،،

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

مع مودتي وتقديري للجميع ،،،

والحمد لله رب العالمين ،،،،

===================يتبع إن شاء الله===========================

post-35455-12691747261831_thumb.jpg

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

السلام عليكم

أخي زياد

أنا علي سبيل المثال عندي مجموعة أكواد صغيرة وأعتقد أن كثير من الإخوة اعضاء المنتدي لهم أكواد صغيرة خاصة بهم تم تفصيلها لتناسب حاجاتهم وطبيعة عملهم

قد يكون الكود غاية في الصغر ولكنه مفيد

وعلي هذا المنوال أخصص لكل من هذه الأكواد shortcut key فهذا ctrl-k وذاك ctrl-j

طبعا غير الكابيتال ctrl-K; ctrl-J

أضعها كلها في ملف Personal يتم فتحه أوتوماتيكيا مع الإكسل

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

(أي كابيتال لأول حرف من كل كلمة)

المعروف أن الدالة Proper في الإكسل تقوم بنفس الوظيفة

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

فإذا خصصت له مثلا ctrl-j ثم تظلل المجال وتضغط ctrl-j

عذرا للإطالة وهذا هو الكود


Sub Adj_Proper()

For Each se In Selection

	se.Value = WorksheetFunction.Proper(se)

Next

End Sub

تم تعديل بواسطه TareQ M
  • Like 2
رابط هذا التعليق
شارك

السلام عليكم

منور منور استاذي الفاضل طارق

بارك الله فيك ،،،

وشرفتنا بهذه الإضافة الله يعطيك الصحة والعافية ،،

شكراً على هذه الدالة المصممة بالكود الصغير،،،

وإضافة لما تفضلت به حضرتك بالنسبة لهذه الأكواد البسيطة أنهارويداً رويداً سوف تنير طريق البرمجة لاعضاء المنتدى ،،،،

فبدل من كود بعدة أسطر ،،، لا يستطيع كثير من الأعضاء فهم معناه نضع كود صغير من سطر ونقوم بشرحه ،،،

ولقد حبذت هذه الطريقة بدل من الخوض في تجربة عمل دورة لإن الدورة إلتزام وتحتاج لمتابعة ،،،

وإذا تم التوقف عنها فجأة لأي سبب خارجي فإن متتبع الدورة ستظل معلومته ناقصة ،،،

خذ على سبيل المثال عندما تريد الحديث عن المتغيرات فكم سيستغرق منك الوقت ،،،

لقد قمت بتجربة كودكم الصغير وهو يعمل بكفاءة عالية ،،، طبعاً بعد تحديد المجال المطلوب ،،

أشكرك جزيل الشكر ،،،

وأحسن ما في الموضع نحن نتحدث عن الإختصار والإيجاز وها انا أسهب القول ،،،

ولكن كل ذلك حتى تبقى الفكرة واضحة ،،،

بارك الله فيك استاذي الفاضل ،،،

وأنا شخصياً انتظر المزيد ،،،

مودتي وتقديري لشخصكم العزيز ،،،

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

السلام عليكم

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

هذا الكود أيضا تظلل مجال في الصفحة قبل تنفيذه

ويقوم بعمليتين

1. محو البيانات فقط من أرقام ونصوص للمجال المحدد (مع الإحتفاظ بالتنسيق والفورمات)

2. الإحتفاظ بمجموع الأرقام إن وجدت في الخلية النشطة وإلا يعطي صفرا

تفضلوا


Sub Summ_t()

x = Application.WorksheetFunction.Sum(Selection)

Selection.ClearContents

ActiveCell.Value = x

End Sub

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

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