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

مش مهم تكون محترف vba ولكن مهم يكون عندك معلومات عن vba


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

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

يتم استكمال

الدرس السادس

8-Loop

الحلقات التكراريه

فى المشاركه التاليه

يتم تناول الاتى

الخروج من الحلقه التكراريه

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

تقبلو تحياتى

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

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

الدرس الثامن

8-Loop

الحلقات التكراريه

وسوف نتناول فى هذه الدرس الاتى

لماذا نستخدم الحلقات التكراريه

انواع الحلقات التكراريه

الخروج من الحلقه التكراريه

كيفية استخدام اكثر من حلقه داخل الكود

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

لماذا نستخدم الحلقات التكراريه

انا شخصيا بعتبر الحلقات التكراريه واحده من اهم المواضيع

التى يجب معرفتها حينما يتم الدخول الى عالم vba

يتم استخدام الحلقات التكراريه لتنفيذ اكثر من امر فى وقت واحد مما يوفر الوقت

ولتوضيح ذلك راجع المثال الاتى

نفترض اننا لدينا مجموعه من الارقام مثلا 7 ارقام (1-2-3-4-5-6-7)

ونريد ادخال هذه الارقم فى السطر الثامن بداية من العمود الخامس اى العمود e

فكيف سنقوم بعمل ذلك

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

هيستخدم الكود الاتى

Sub enterdata()
[e8] = "1"
[f8] = "2"
[g8] = "3"
[h8] = "4"
[i8] = "5"
[j8] = "6"
[k8] = "7"
End Sub

اى سيقوم بالاشاره الى كل خليه على حده

واعطاء كل خليه قيمتها  كما هو متضح من الصوره

وبالتالى بعد كتابة هذه الكود وتخصيص زر لتنفيذه

او بالوقوف داخل الكود بالماوس ثم الضغط على f5

سوف يتم ملئ الخلايا بالبيانات كما فى الصوره

untitled.thumb.JPG.fd50badf36cba26790287

دعونا الان نتطرق الى كيفيه تنفيذ ذلك بالحلقات التكراريه

انواع الحلقات التكراريه

1- FOR

2- WHILE

3- DO

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

الحلقه الاولى                                                    for …next

هذه الحلقه تبدأ بكلمة FOR  وتنتهى بكلمة NEXT

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

للتوضيح اكتر

For بداية الحلقه =  اسم الحلقه To طريقه تنفيذ الحلقه] نهايةالحلقه]
[ماسيتم تنفيذه داخل الحلقه]
[Exit For] الخروج من الحلقه

Next استكمال الحلقه حت النهاية

 

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

وليكن مثلا H

ثم يجب ان يكون لها بدايه ولها نهايه

وليكن ستبدأ من 1 وتنتهى فى 10

ثم سيكون هناك ما ينفذ داخل الحلقه

والمقصود بطريقة تنفيذ الحلقه اى هل سيتم تنفيذها

خطوه بخطوه وهذا هو الشائع فى الاستخدام ام كل خطويتن

ام كل ثلاث خطوات وهكذا

ولتطبيق ذلك

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

 اننا نريد ادخال الارقام  من 1 الى 4 فى السطر 26  بداية من العمود 8

كيف سنقوم بعمل ذلك

1-نعطى الحلقه اسم معين   FOR H                                H

2-نحدد البدايه  8  ونحدد النهاية 11                

     FOR H =8 TO 11

    لاحظ ان عدد الحلقات هنا 4 عباره عن 8و9و10و111

3-ماسيتم تنفيذه

 Cells(26, h) = h - 7

4-استكمال الحلقه            NEXT

 

وبالتالى سيكون شكل الكود كالاتى

Sub enterdata_for()
For h = 8 To 11
' h----- متغير تم تعريه على انه يبدأ من 8 وينتهى عند 11
' اى ان عدد حلقاته هى 4 عباره عن 8ثم9ثم10ثم11
Cells(26, h) = h - 7
' هنا يتم تنفيذ الكود
' هنا نقول ان الخليه التى تقع فى السطر26 وفى العمود من8الى11
' مطروحا منه 7 ارقام ليصبح قيمة المتغير تساوى1hتساوى قيمة المتغير
' Cells(26, H)---  الرقم26هنا يدل على رقم السطر الذى سينفذ فيه الكود
' Cells(26, H)---  عباره عن العمود الذى سينفذ فيه الكود وبذلك يتضحh
'  hلنا ان الكود سوف ينفذ على الاعمده من 8الى11 لانها تساوى قيمة المتغير
'  h-7    يبدأ من الرقم8وينتهى عند الرقم11 فحينما ينم طرحhبما ان المتغير
' الرقم7 من المتغير بذلك تصبح قيمة المتغير تبدأ من الرقم1وتنتهى عند الرقم4
'وبذلك يكون تنفيذ الكود كالاتى
' الخليه فى السطر26وفى العمود5تساوى الرقم1ثم
' الخليه فى السطر26وفى العمود6تساوى الرقم2ثم
' الخليه فى السطر26وفى العمود6تساوى الرقم3ثم
' وهكذا حت نصل الى اخر الحلقه التكراريه اى العمود11
Next '  hتكرار عمل الكود حتى نهاية المتغير
' next---- forاقفال الحلقه التكراريه
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.57039c09d4ea7b2fe04cb

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

بمعنى لو اننا اردنا مثلا تنفيذ نفس الكود على الخلايا من h23 الى h26

اى فى الخلايا h23 و h24 و h25 و h26

كيف سيكون شكل الكود

الكود هيكون نفس الكود السابق ولكن ما سيختلف هو

اننا سوف نعيد تغير قيمة المتغير h الخاص بالحلقه التكراريه ليصبح من 23 الى 26

ثم نقوم بتغير موضع المتغير h الخاص بالحلقه التكراريه من الصف الى العمود

للتوضيح اكثر

الفكره هكلها محصوره فى السطرين دول 

For h = 8 To 11

هنا طبعا قيمة المتغير h الخاص بالحلقه التكراريه من 8 الى 11

احنا عايزين نخليه يبقى من 23 الى 26

يبقى هيكون بالشكل ده

For h = 23 To 26

وكمان فى السطر ده

Cells(26, h) = h - 7

وطبعا احنا قولنا ان الجزئيه دى

Cells(26

تعنى ان الكود سوف ينفذ على السطر 26

والجزئيه دى

Cells( , h)

تعنى انه هينفذ على العمود h وطبعا h احنا معرفينه على انه من8 الى 11

اى انه سينفذ على العمود 8 ثم العمود 9 ثم العمود10 ثم العمود11

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

طب حنا عايزين ننفذ الكود على العمود h اى العمود رقم 8

يبقى سطر الكود هيكون بالشكل ده

Cells( , 8)

وعلى السطور من 23 الى 26  وبما اننا عرفنا h على انه من 23 الى 26

يبقى سطر الكود هيصبح بالشكل ده

Cells(h, )

وفى النهاية هنلاقى ان سطر الكود بالكامل بالشكل ده

Cells(h,8 )

اى ان الكود سينفذ على السطور h الى احنا عرفناها على انها من 23 الى 26

وعلى العمود رقم 8

وبعد كده تأتى الجزئيه دى

 = h - 7

ولاننا كنا معرفين h يبدأ من الرقم 8 فطرحنا من h الرقم 7 للحصول على الرقم 1

الى هو اول رقم احنا عايزين ندخله فلا او خليه

وبما اننا لسه بردو عايزين نخلى الرقم 1 هو اول رقم يتم ادخاله

ولكننا قمنا بتغير قيمة المتغير h لتصبح من 23

وللحصول على الرقم 1 يبقى لابد اننا نطرح من المتغير h ما يعطينا الرقم 1

وبالتالى سنجد سطر الكود هيكون كده

= h - 22

وفى النهاية سيكون شكل الكود كده

Sub enterdata_for1()
Dim h As Integer
For h = 23 To 26
Cells(h, 8) = h - 22
Next
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.92760751de57d035b292d

الحلقه الثانيه                         While

سوف نتعرف على كيفيه استخدام الحلقه التكراريه  While...Wend

هذه الحلقه تبدأ بكلمة While وتنتهى بكلمة Wend

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

للتوضيح اكتر

 While  [ الشرط ]
  ما يتم تنفيذه 
    Wend  نهاية الحلقه

 فلو اننا نريد ادخال الارقام  من 1 الى 4 فى السطر 38  بداية من العمود 8

كيف سيكون شكل الكود

Sub EnterwhileWend()
    Dim h As Integer
' H--- متغير تم تعريفه على انه رقم صحيح
    h = 8 ' متغير تم تعريفه على انه يساوى الرقم8-----
    While h <= 11
' هنا نقول ان الحلقه التكراريه تكون اقل من الرقم11او تساويه
       Cells(38, h) = h - 7
' Cells(38, H)---  الرقم38هنا يدل على رقم السطر الذى سينفذ فيه الكود
' Cells(38, H)---  عباره عن العمود الذى سينفذ فيه الكود وبذلك يتضحh
'  hلنا ان الكود سوف ينفذ بديةمن العمود8 لانها تساوى قيمة المتغير
'  h-7    يساوى الرقم8 فحينما يتم طرحhبما ان المتغير
' الرقم7 من المتغير بذلك تصبح قيمة المتغير تساوى الرقم1
       h = h + 1
'h = h + 1  هنا نقول انه يتم زياده قيمة المتغير بقيمة1صحيح مع كل
'  حلقه تكراريه حتى نصل الى  الشرط وهو ان يكون اقل من او يساوى11
    Wend  '-------'نهاية الحلقه  While
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.fddf2266ffdab2dd738a7

الحلقه الثالثه                       Do

تنقسم الى ثلاثة انواع

untitled.thumb.JPG.f8de2c529a2afcb295f5c

النوع الاول Do While  Loop

 فلو اننا نريد ادخال الارقام  من 1  الى 4 فى السطر 57  بداية من العمود 8

كيف سيكون شكل الكود

Sub EnterDoWhile()
    Dim h As Integer
' H--- متغير تم تعريفه على انه رقم صحيح
    h = 8 ' متغير تم تعريفه على انه يساوى الرقم8-----
    Do While h <= 11
' هنا نقول ان الحلقه التكراريه تكون اقل من الرقم11او تساويه
       Cells(57, h) = h - 7
' Cells(57, H)---  الرقم57هنا يدل على رقم السطر الذى سينفذ فيه الكود
' Cells(57, H)---  عباره عن العمود الذى سينفذ فيه الكود وبذلك يتضحh
'  hلنا ان الكود سوف ينفذ بديةمن العمود8 لانها تساوى قيمة المتغير
'  h-7    يساوى الرقم8 فحينما يتم طرحhبما ان المتغير
' الرقم7 من المتغير بذلك تصبح قيمة المتغير تساوى الرقم1
       h = h + 1
'h = h + 1  هنا نقول انه يتم زياده قيمة المتغير بقيمة1صحيح مع كل
'  حلقه تكراريه حتى نصل الى  الشرط وهو ان يكون اقل من او يساوى11
    Loop  '-------'نهاية الحلقه  Do While
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.a03811d5b4bdaa86937c7

النوع الثانى   Do Loop While

 فلو اننا نريد ادخال الارقام  من1 الى 4 فى السطر 67 بداية من العمود 8

كيف سيكون شكل الكود

Sub EnterDo()
    Dim h As Integer
' H--- متغير تم تعريفه على انه رقم صحيح
    h = 8 ' متغير تم تعريفه على انه يساوى الرقم8-----
    Do
       Cells(67, h) = h - 7
' Cells(67, H)---  الرقم67هنا يدل على رقم السطر الذى سينفذ فيه الكود
' Cells(67, H)---  عباره عن العمود الذى سينفذ فيه الكود وبذلك يتضحh
'  hلنا ان الكود سوف ينفذ بديةمن العمود8 لانها تساوى قيمة المتغير
'  h-7    يساوى الرقم8 فحينما يتم طرحhبما ان المتغير
' الرقم7 من المتغير بذلك تصبح قيمة المتغير تساوى الرقم1
       h = h + 1
'h = h + 1  هنا نقول انه يتم زياده قيمة المتغير بقيمة1صحيح مع كل
'  حلقه تكراريه حتى نصل الى  الشرط وهو ان يكون اقل من او يساوى11
    Loop While h <= 11
   ' هنا نقول ان الحلقه التكراريه تكون اقل من الرقم11او تساويه
     '-------'نهاية الحلقه  Do
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.9520a7fe1aa34eddf6da2

النوع الثالث   Do Until Loop

فلو اننا نريد ادخال الارقام  من 1 الى 4 فى السطر 77 بداية من العمود 8

كيف سيكون شكل الكود

Sub EnterDoUntil()
    Dim h As Integer
' H--- متغير تم تعريفه على انه رقم صحيح
    h = 8 ' متغير تم تعريفه على انه يساوى الرقم8-----
    Do Until h > 11
' هنا نقول ان الحلقه التكراريه سوف تنفذ حتى الرقم11
       Cells(77, h) = h - 7
' Cells(77, H)---  الرقم77هنا يدل على رقم السطر الذى سينفذ فيه الكود
' Cells(77, H)---  عباره عن العمود الذى سينفذ فيه الكود وبذلك يتضحh
'  hلنا ان الكود سوف ينفذ بديةمن العمود8 لانها تساوى قيمة المتغير
'  h-7    يساوى الرقم8 فحينما يتم طرحhبما ان المتغير
' الرقم7 من المتغير بذلك تصبح قيمة المتغير تساوى الرقم1
       h = h + 1
'h = h + 1  هنا نقول انه يتم زياده قيمة المتغير بقيمة1صحيح مع كل
'  حلقه تكراريه حتى نصل الى  الشرط وهو ان يكون اقل من او يساوى11
    Loop  '-------'نهاية الحلقه  Do Until
End Sub

ويكون ناتج الكود بهذا الشكل

untitled.thumb.JPG.36d086232ec653258dd92

الخروج من الحلقه التكراريه

نتعرف هنا على كيفيه الخروج من الحلقه التكراريه

مثال

لو اننا لدينا اسماء فى الخلايا من a80:a85

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

الخليه b80 مع الاسماء الموجود فى النطاق

يتم كتابة الرقم 1 فى الخلايا من c80:c85

وفى حالة فراغ الخليه يتم الخروج من الحلقه التكراريه

كيف سيتم تنفيذ ذلك بالكود

لاحظ كما فى الصوره ان الخلايا الموجوده

فى العمود c فارغه

untitled.thumb.JPG.86080e7ad9a7311ea0256

جرب تنفيذ الكود الاتى

Sub hima()
    Dim h As Integer

For h = 80 To 85
If Cells(h, 1) = [b80] Then
Cells(h, 3) = 1
End If
Next
End Sub

شاهد النتيجه بعد تنفيذ الكود

untitled.thumb.JPG.a63c4508df4d818e0d746

ستلاحظ انه تم ادخال الرقم فى كل خلايا العمود c

التى تقابلها فى العمود a الاسم a

اما اذا قمنا باضافة exit for الى الكود

هكذا

Sub hima()
    Dim h As Integer
For h = 80 To 85
If Cells(h, 1) <> [b80] Then
Exit For
End If
If Cells(h, 1) = [b80] Then
Cells(h, 3) = 1
End If
Next
End Sub

لاحظ هنا انه تم اضافة هذه الاسطر الى الكود

If Cells(h, 1) <> [b80] Then
Exit For
End If

وهنا نقول انه فى حالة ان الخلايا فى العمود الاول

لاتساوى الخليه b80 يتم الخروج من الحلقه التكراريه

ولا يتم تنفيذ شئ اخر

وهنا نلاحظ الاتى كما فى الصوره

untitled.thumb.JPG.e9e96ddd0fb21b4c121e2

ان الخليه a80 بها الاسم a

وان الخليه a81 بها الاسم b

لذلك فان الكود خلال تنفيذه تم اكتشاف ان لااسم فى الخليه

الاولى a80 مطابق فتم اعطاء الخليه المقابله لها فى العمود c الرقم1

ثم حينما تم الوصول الى الخليه الثانيه a81 تم اكتشاف انها غير مطابقه

فتم الانتقال الى السطر exit for وبذلك تم الخروج من الكود

ولم يتم تنفيذ شئ اخر

نجد ان exit for تستخدم للخروج من الحلقه التكراريه   For Next

نجد ان exit do تستخدم للخروج من الحلقه التكراريه             do

نجد ان exit Sub تستخدم للخروج من الكود نهائيا                  

مثال

تلوين الخلايا من g95:k95 باللون الاحمر

Sub color_loop()
    Dim h As Integer
For h = 7 To 11
Cells(95, h).Interior.Color = RGB(255, 0, 0) ' red
Next
End Sub

untitled.thumb.JPG.d741f52d51505fdf2fb9a

استخدام اكثر من حلقه فى كود واحد

مثال

ماذا لو اردنا تلوين الخلايا

من g102:k102 بالوان مختلفه بحيث تأخذ الخليه ذات

الزوجى اللون الاسمر

Sub color_loop1()
    Dim h As Integer
For h = 7 To 11
If h Mod 2 = 0 Then
Cells(102, h).Interior.Color = RGB(0, 0, 0) ' red
Else
Cells(102, h).Interior.Color = RGB(200, 0, 0) ' blak
End If
Next
End Sub

untitled.thumb.JPG.a8413940325ab00eef76f

ماذا لو اردنا ادخال الاسم فردى فى السطور الفرديه والاسم زوجى فى السطور الزوجيه

من g109:k114  بحيث يأخذ

السطر الفردى الاسم فردى والسطر

الزوجى الاسم زوجى

Sub color_loop2()
    Dim h As Integer
    Dim hh As Integer
For h = 1 To 5
For hh = 7 To 11
If h Mod 2 = 0 Then
Cells(h + 108, hh) = "زوجى"
Else
Cells(h + 108, hh) = "فردى"
End If
Next
Next
End Sub

 

untitled.thumb.JPG.d136bb7be5f95ba523caa

اتمنى ان يكون الدرس مفيدا

مرفق شيت اكسيل به التطبيقات

 learnvba.rar

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

learnvba.rar

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

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

اخواني الاعزاء ابراهيم ابوليله وعبدالعزيز البسكري

الاخ عبدالعزيز عجبة الموضوع الشيًق واظن انه يقصد تجديد وتقديم الموضوع  والله اعلم

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

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

بارك الله فيك أستاذنا الفاضل KHMB ..تخمينك طلع مضبوط  200% .. مواضيع كهذه تعتبر كنز ثمين ..

                                        خالص إحتراماتي

5616922323f4f____.thumb.gif.1e7f89029c1e

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

بصراحة مشكور دروس رائعة من شخص رائع وكلك اروع من الاروع

بارك الله فيك واحاطك بعين عنايته

اخى قلم الاكسيل

منور الموضوع

مشكورا على الكلمات الطيبه

اتمنى لك الاستفاده والتوفيق

تقبل تحياتى

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

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

اخواني الاعزاء ابراهيم ابوليله وعبدالعزيز البسكري

الاخ عبدالعزيز عجبة الموضوع الشيًق واظن انه يقصد تجديد وتقديم الموضوع  والله اعلم

ياه

KHMB

فينك من زمان ياراجل

لسه فاكر او مشاكه ما بينا

اعتقد كانت بخصوص فاتوره على الاكسيل

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

نموذج فاتوره بدون فورم

على العموم

متغيبش عننا كتير

تقبل تحياتى

 

 

اخى عبد العزيز

طبعا الشكر موصول

لاخونا KHMB

على التوضيح

وتحيه خاصه ليك طبعا على المتابعه المستمره للموضوع

والتشجيع المستمر ليا علشان نستكمل الموضوع

وان شاء الله رغم قله المشاهده وقلة المتابعين

الا اننى مصر على عرض المعلومات التى لدى

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

تقبل تحاتى

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

السلام عليكم

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

اقترح .... عليك فكرة وهي وضع سؤال او احجية من الشرح السابق ... او مجموعة اسئلة مثل اسئلة الابواب التي في الكتاب المدرسي لتري مدى الاستجابة والتنافس في الطلاب ........والاجابة تكون من غير المحترف في vba

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

الاستاذ ابراهيم جزاك الله عن كل ما تقدمه لنا من مجهود و اعلم ان موضوعك اصبح مرجع للشخص المبتدا مثلي اليوم وربما غدا لابني واصحابه و ربما بعد الغد لحفيدي و اصحابه انت زرعت الشجره وهي ستثمر علي مدار عمرها في كل موسم لها وتعطي كل محتاج . فجزاك الله الخير في الدارين وجعلك من ضيوفه  في اقرب وقت يشائه وعليه نتوكل نعم المولي و نعم البصيررر .........لو كان الشريط المتحرك الذي كان يصحب الموقع القديم لوجدت التفاعل اكثر بكثيررررر جداااااا

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

 

اخى محمد

لازلنا فى شرح الدروس

اما مرحلة التطبيقات ستاتى

لاحقا

تقبل تحياتى

 

اخى واستاذى عادل

طبعا شرف كبير انك تكون احد المشاركين

والمتابعين للموضوع

بارك الله فيك

تقبل تحياتى

 

اخى ابو يوسف

ملوحوظه فى محلها

وان كنت اخدت بالى منها

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

للمنتدى مكنتش بتظهر وبعدين بدأت تظهر وبعدين معدتش بتظهر

شوفت انت بقى اللغبطه دى

بس على العموم ان شاء الله هيكون فيه رابط المشاركات الخاصه بكل درس

تقبل تحياتى

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

السلام عليكم أخي الحبيب إبراهيم أبو ليله المحترم:

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

تعلمنا من حضرتك أن الحلقة التكرارية تغنينا عن كتابة كل خلية حسب موقعها ضمن الكود

كما أتمنى أن يكتب الكود يوماً ما بالعربية، ألا يكتب الإنكليز بلغتهم والصينيون بلغتهم والهنود أيضاً فلم لا يكون لنا استقلالنا بكل شيء فنكتب مثلاً - وهو حلم نود لو تحقق ذات يوم:

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

Sub enterdata_for1()
Dim h As Integer
For h = 23 To 26
Cells(h, 8) = h - 22
Next
End Sub
 
كود إدخال_بيانات_لأجل1()
تعريف h كعدد صحيح
لأجل h =23 إلى 26
الخلايا (h,8)=h-22
التالي
نهاية الكود

 

 

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

السلام عليكم أخي الحبيب إبراهيم أبو ليله المحترم:

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

تعلمنا من حضرتك أن الحلقة التكرارية تغنينا عن كتابة كل خلية حسب موقعها ضمن الكود

كما أتمنى أن يكتب الكود يوماً ما بالعربية، ألا يكتب الإنكليز بلغتهم والصينيون بلغتهم والهنود أيضاً فلم لا يكون لنا استقلالنا بكل شيء فنكتب مثلاً - وهو حلم نود لو تحقق ذات يوم:

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

Sub enterdata_for1()
Dim h As Integer
For h = 23 To 26
Cells(h, 8) = h - 22
Next
End Sub
 
كود إدخال_بيانات_لأجل1()
تعريف h كعدد صحيح
لأجل h =23 إلى 26
الخلايا (h,8)=h-22
التالي
نهاية الكود

 

 

اخى محمد

تنمنى من الله عز وجل

ان يمدنا ويرزقنا بما ينفعنا

تقبل تحياتى

اخى ابراهيم

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

بارك الله فيك

شروحات ممتازة

اخى سعد

بتغيب تغيب وتظهر على فترات

ياريت متسبناش كتير

عايزين نستفيد من خبراتك

تقبل تحياتى

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

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

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

فقط لو كان بالإمكان سيّدي الكريم أن تضع بأجندة سلسلة دروسك .. دروس " الترحيل " بين شيتات الاكسيل و ليس للفورم .. ألف شكر مقدّمًا .. مع خالص إحتراماتي

561ce3e0d4480___.thumb.gif.63eeca06efc31

 

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

 

اخى عبد العزيز

اشكرك على الكلمات الطيبه

بارك الله فيك

واسأل الله ان يزيدك من فضله وعلمه

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

ولكن صبرا صبرا

فلم ننتهى من هذه الدروس حتى الان

وكما ذكرنا فى عنوان الموضوع

انك باذن الله لن تحتاج الى السؤال

حينما تتعامل مع VBA

فى الحالات البسيطه بحيث يكون لديك معلومات تستطيع بها تنفيذ

مطالبك

وطبعا من ضمن هذه الدروس

سيكون الترحيل باذن الله

تقبل تحياتى

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

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

الدرس التاسع

9-MsgBox

الرساله

وسوف نتناول فى هذه الدرس الاتى

 شكل السطر الخاص بالرساله

الاسماء الخاصه بالازرار والارقام التى يمكن استبدال الاسم بها

اضافة سطر فاصل فى الرساله

كيفية استخدام الجمل الشرطيه if مع MsgBox

كيفية استخدام  Select Case مع MsgBox

 شكل السطر الخاص بالرساله

نحتاج الى استخدام الرسائل داخل الاكواد

لتذكرينا بشئ معين او تنبيهنا بشئ معين كهذا

Untitled.thumb.jpg.d39c1b6622b19e66cabbf

ولمعرفة كيفية عمل ذلك

دعونا نستعرض السطر الخاص بالكود الخاص بالرساله

MsgBox([النص], [الازرار], [العنوان])

النص-----هنا يتم كتابة نص الرساله التى سوف تظهر لك

الازرار---اختيار الازرار التى تظهر فى الرسالهyes, no, cancelويوجد ايضا ازرار اخرى

العنوان---عنوان الرساله

راجع الصوره الاتيه

Untitled.thumb.jpg.a237c849ba88e1106f3b2

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

Sub msgbox_()
MsgBox "لاتنسونى بصالح الدعاء", vbYesNoCancel, "اللهم تقبل من صالح الاعمال"
End Sub

وفى هذا الكود قلنا ان

محتوى النص -- لاتنسونى بصالح الدعاء

تكون الازرار--الموجوده فيها yes-no-cancel

يكون العنوان-- اللهم تقبل من صالح الاعمال

ولو افترضنا اننا نريد اظهار الزر yes فقط

نقوم باستبدال السطر الاتى

vbYesNoCancel

ب السطر الاتى

vbYes

اما اذا اردنا اظهار الزر yes  والزر no

يكون سطر الكود كالاتى

vbYesNo

ملحوظه بسيطه

يمكن الاستغناء عن كتابة الاسم الخاص بكل زر واستبدال الاسم بالرقم الخاص بالزر

لاحظ الكود الاتى

Sub msgbox_1()
MsgBox "لاتنسونى بصالح الدعاء", 3, "اللهم تقبل من صالح الاعمال"
End Sub

 

لاحظ اننا استخدمنا الرقم 3 بدلا من vbYesNoCancel

وذلك من اجل اظهار الازرار yes - no -cancel

الاسماء الخاصه بالازرار والارقام التى يمكن استبدال الاسم بها

ولمعرفة المزيد من الاسماء الخاصه بالازرار والارقام التى تعبر عن كل زر وكيفية كتابة الاكواد

راجع الصوره الاتيه

Untitled.thumb.jpg.b3a84289c1a185d4511ff

اضافة سطر فاصل فى الرساله

هناك طريقتان لعمل ذلك

الطريقه الاولى

تعتمد هذه الطريقه على استخدام الخاصيه Chr مع استخدام الرقم 10 الخاص باضافة سطر فاصل

وتكون شكل الرساله كالاتى

Untitled.thumb.jpg.e8288cbe0845ab34f8ad3

وبالتالى نجد شكل الكود كالأتى

Sub Line_MsgBox()
MsgBox "النص الاول" & Chr(10) & "النص الثانى" & Chr(10) & "النص الثالث", vbYesNoCancel + vbDefaultButton3, "العنوان"
End Sub

الطريقه الثانيه

تعتمد على استخدام vbNewLine

وتكون شكل الرساله كالاتى

Untitled.thumb.jpg.3c388a2d253bf3e407bbe

وبالتالى نجد شكل الكود كالأتى

Sub Line_MsgBox1()
MsgBox "النص الاول" & vbNewLine & "النص الثانى" & vbNewLine & "النص الثالث", vbYesNoCancel + vbDefaultButton3, "العنوان"
End Sub

كيفية استخدام الجمل الشرطيه if مع MsgBox

مثال

نفترض اننا لدينا الخليه a51 نريد ادخال الاسم ابراهيم فيها ونريد ان تظهر لنا رساله تفيد هل 

تريد ادخال الاسم فى الخليه نعم ام لا--ثم اذا كانت الاجابه بنعم  تظهر لنا رساله تفيد بأنه تم

ادخال الاسم بنجاح  واما اذا كانت الاجابه

ب لا تظهر رساله تفيد بانه قد تم الالغاء

كما يتضح من الصوره

Untitled.thumb.jpg.86e9d80fe705e4c24c985

فى حالة الضغط على نعم

Untitled.thumb.jpg.4ef5ef1f9e602247d3924

فى حالة الضغط على زر  لا

Untitled.thumb.jpg.e9eba25bc482d46d9b22a

ولمعرفة كيفية عمل ذلك

نستعرض محتوى الرساله

النص----هل نريد ادخال الاسم فى الخليه a51 نعم ام لا

الازرار-- زر نعم---زر لا

العنوان--تنبيه

راجع الكود الاتى

Sub if_MsgBox()
Range("a51").ClearContents
' حزف محتوى الخليه
Dim Answer As String
'Answer متغير تم تعريفه على انه من النوع نصوص
Answer = MsgBox("هل نريد ادخال الاسم فى الخليه a51 نعم ام لا", vbYesNo, "تنبيه")
If Answer = vbYes Then
        Range("a51") = "إبراهيم"
        MsgBox "تم ادخال الاسم بنجاح", vbOKOnly, "تنبيه"
ElseIf Answer = vbNo Then
MsgBox "تم إلغاء عملية الادخال", vbOKOnly, "تنبيه"
End If
End Sub

كيفية استخدام  Select Case مع MsgBox

مثال

نفترض اننا لدينا الخليه a60 نريد ادخال الاسم أبوليله فيها ونريد ان تظهر لنا رساله تفيد هل

تريد ادخال الاسم فى الخليه نعم ام لا--ثم اذا كانت الاجابه بنعم  تظهر لنا رساله تفيد بأنه تم

ادخال الاسم بنجاح  واما اذا كانت الاجابه ب لا

تظهر رساله تفيد بانه قد تم الالغاء

كما يتضح من الصوره

Untitled.thumb.jpg.43f770472dc8afb587597

فى حالة الضغط على نعم

Untitled.thumb.jpg.4ef5ef1f9e602247d3924

فى حالة الضغط على زر  لا

Untitled.thumb.jpg.e9eba25bc482d46d9b22a

ولمعرفة كيفية عمل ذلك

نستعرض محتوى الرساله

النص----هل نريد ادخال الاسم فى الخليه a60 نعم ام لا

الازرار-- زر نعم---زر لا

العنوان--تنبيه

راجع الكود الاتى

Sub SelectCase_MsgBox()
Range("a60").ClearContents
Dim lReply As Long
Reply = MsgBox("هل نريد ادخال الاسم فى الخليه a60 نعم ام لا", vbYesNo, "تنبيه")
    Select Case Reply
        Case vbYes
        Range("a60") = "أبوليله"
MsgBox "تم ادخال الاسم بنجاح", vbOKOnly, "تنبيه"
        Case vbNo
MsgBox "تم إلغاء عملية الادخال", vbOKOnly, "تنبيه"
    End Select
End Sub

اتمنى ان يكون الدرس مفيدا

مرفق شيت اكسيل به التطبيقات

 learnvba.rar

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

learnvba.rar

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

السلام عليكم أخي العزيز إبراهيم أبو ليله ...

بارك الله بك وبأعمالك الطيبة وجعلها بميزان حسناتك...

وألتمس منكم العذر لقلة متابعتي لكثرة مشاغلي ...

فإن سنحت لي الفرصة المناسبة سأعوض ما فاتني وسأكون متابعاً لأستاذي العزيز إبراهيم...

عاماً سعيداً وجمعة مباركة نرجوها لكم جميعاً...

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

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

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

الأستاذ الفاضل إبراهيم أبو ليلة

بعد التحية

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

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

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

بالإضافة إلي إن الملفات المرفقة لاتعمل علي إكسيل 2003 هو المتوفر لدى وأقوم بعمل ما يلزمني عليه

أرجو إن اطلعت على طلبي ان تشمله بالرعاية حيث إنني في اشد الحاجة لهذا العمل

ومازلت اتابعكم فى عملكم الحالى الخاص بشرح الVBA وهذا ايضا عمل يضاف الى اعمالك الجيدة

ولك من قبل ومن بعد وافرشكرى وامتناني

elameen

 

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

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

الدرس العاشر

10-InputBox

صندوق الإدخال

تستخدم InputBox كوسيله لادخال البيانات او للتحقق من بيانات معينه

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

InputBox("القيمه الافتراضيه", "العنوان", "النص")

Untitled.thumb.jpg.4476d36d3a6125168dc2c

مثال على كيفية استخدامها فى ادخال البيانات

نريد ادخال اسم hima فى الخليه A3 عن طريق InputBox

سيكون شكل الكود كالاتى

Sub InputBox_()
Dim hima As String
'hima متغير من نوع النصوص
hima = InputBox("النص", "العنوان", "hima")
' InputBoxقيمة himaاعطاء المتغير
Range("a3") = hima
'InputBox اى himaتساوى قيمة المتغير  a3 هنا نقول ان الخليه
End If
End Sub

مثال على كيفية استخدامها فى التحقق من البيانات

نريد ادخال اسم hima فى الخليه A3

عن طريق InputBox ونريد ان تظهر لناInputBox

نقوم بادخال باسوورد123 كشرط لادخال

لظهور InputBox اخرى يتم استخدامها

فى ادخال البيانات

Untitled.thumb.jpg.89188135440e4abba4f6e

Untitled.thumb.jpg.7ce534a1c188933bf22cd

Untitled.thumb.jpg.03e5ae33685f9789b5123

Untitled.thumb.jpg.41defb11b5c0a65f1511c

Untitled.thumb.jpg.9529ef9cc303692ac2656

Untitled.thumb.jpg.73e87224a036ba5bc76d8

ولعمل ذلك قم بكتابة الكود الاتى

Sub InputBox_1()
Dim h As Integer
h = 123
'hima متغير من نوع النصوص
hima = InputBox("ادخل الرقم السرى", "العنوان")
If IsNull(hima) Or hima = "" Then GoTo xx
' xxفى حالة الفراغ يتم الذهاب الى
If h = hima Then
' hفى حالة تساوى القيمة المدخله مع المتغير
hima1 = InputBox("النص", "العنوان")
Range("a3") = hima1
'InputBox اى himaتساوى قيمة المتغير  a3 هنا نقول ان الخليه
Else
xx: MsgBox "كلمة مرور غير صحيحة" & Chr(13) & " الرجاء اعادة ادخال كلمة المرور ", vbOKOnly
End If

End Sub

اتمنى ان يكون الدرس مفيدا

مرفق شيت اكسيل به التطبيقات

 learnvba.rar

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

learnvba.rar

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information