أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
مالك ماريه Eslam Abdullah-- لا تميز خلال هذه الفترة YasserKhalil مع أكاديمية الصقر اخفي أكوادك وعيش حياتك EvilClippy VBA Project Unviewable Protection اكسيل اسئله واجابات


اعلان هنا
ألعاب فلاش أون لاين
أعلن هنا
أعلن هنا
صفحتنا على الفيس بوك
أعلن هنا



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





إيجاد الصف الأخير (درس للمبتدئين)

السلام عليكم ورحمة الله وبركاته أقدم لكم درس بسيط للمبتدئين في عالم الأكواد ، وهو درس لا غنى عنه ، وربما لا تجد كود لا ي ..



26-08-2017 09:11 مساء
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 

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

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

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

بفرض أن لديك في العمود الأول A بعض البيانات ، وأردت معرفة رقم آخر صف به بيانات في هذا العمود .. سأضع الكود بشكل مبدئي ثم نتناول كل جزئية على حدا لتفهم كيف يسير الأمر

Sub FindLastRow()
    Dim lastRow As Long
    
    lastRow = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    
    MsgBox lastRow
End Sub



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

يبدأ الكود بكلمة Sub وهي اختصار لكلمة Subroutine أي إجراء فرعي (وهو ما يطلق عليه الكود أو الماكرو) ، وكما أن لكل شيء عنوان فلابد من تسمية الكود ، ويفضل أن تكون التسمية معبرة عن الهدف من الكود (هذه عادة طيبة يتبعها المبرمجون ، ربما ستعرف أهمية هذه النقطة إذا كنت بصدد بناء برنامج ضخم يحتوي على الكثير والكثير من الأكواد) ، فالتسمية تيسر عليك الأمر فيما بعد للوصول لكود محدد .. وهنا قمت بتسمية الماكرو FindLastRow أي إيجاد الصف الأخير.
وللتسمية شروط لن نتطرق إليها ، ولكن يفضل استخدام حروف إنجليزية كبيرة وصغيرة ، والابتعاد عن الرموز الخاصة ما عدا رمز UnderScore يمكن استخدامه للفصل بين الكلمات ، فيمكن تسمية الماكرو بهذا الاسم على سبيل المثال Find_Last_Row

وكما أن لكل شيء بداية ، فلابد له من نهاية والنهاية تكون بجملة End Sub أي إنهاء الإجراء الفرعي

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

** اكتب في صندوق الاسم Name Box على يسار شريط المعادلات ، اكتب A1000 مثلاً ثم اضغط إنتر
MjU4OTcwMQ4646001
001-280x300الآن من شريط الحالة أسفل البرنامج ستجد أيقونة لتسجيل الماكرو Record Macro قم بالنقر عليها
Mzc0MjA4MQ6868002
002-300x83003-300x247بعد النقر عليها سيظهر مربع حواري لبدء عملية تسجيل الماكرو ، انقر على زر الأمر OK لتبدأ في التسجيل (كل ما سنقوم به هو الانتقال للأعلى في نفس العمود) .. الخلية النشطة الآن هي الخلية A1000 والمطلوب الانتقال للأعلى ويتم ذلك بالضغط على Ctrl + سهم لأعلى
MzA2NTQx003

ستلاحظ تغير شكل الأيقونة الخاصة بالتسجيل لهذا الشكل (دليل على أن عملية التسجيل قد بدأت)
NTY4Njgx004

004قم بالضغط على مفتاح Ctrl من لوحة المفاتيح ، ولا ترفع إصبعك من على المفتاح ، ثم اضغط سهم لأعلى من الأسهم الموجودة في لوحة المفاتيح
ثم قم بالنقر على نفس الأيقونة لإيقاف عملية التسجيل ، وانتقل لمحرر الأكواد عن طريق الضغط على Alt + F11 لترى ما تم تسجيله ، ستجد الشكل التالي :

Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.End(xlUp).Select
End Sub

كما نلاحظ تمت الإشارة إلى الخلية A1000 والتي كانت نشطة (محددة) بكلمة Selection يليها كلمة End مع ذكر الاتجاه لأعلى ما بين قوسين xlUp ، ثم أخيراً يتم تحديد تلك الخلية ، أي ببساطة يتم استخدام الجزء الأوسط للانتقال من خلية محددة لأعلى في نفس العمود

في الكود المقدم يبدأ السطر الأول بتعريف متغير باستخدام كلمة Dim يليها اسم المتغير ويفضل أن يكون معبر عن الهدف من استخدامه ، وبما أن المتغير سيستخدم لمعرفة رقم آخر صف فقمت بتسميته lastRow ، ثم بعد تسيمة المتغير يتم تعريف نوعه وهو سيكون رقم صحيح طويل ، حيث أن الصفوف في ورقة العمل تبدأ من 1 إلى 1048576.

في السطر التالي يتم تعيين قيمة للمتغير الذي تم الإعلان عنه ليساوي رقم آخر صف في العمود الأول.
يتم الإشارة أولاً إلى المصنف الذي سيتم العمل عليه ، وبما أن العمل سيكون على المصنف الحالي فنستخدم كلمة ThisWorkbook ، ويمكن الاستغناء عن هذا الجزء إذا كان العمل على مصنف واحد فقط.
ثم يتم الإشارة إلى ورقة العمل المطلوب استخراج رقم آخر صف بها وتستخدم كلمة Sheets يليها اسم ورقة العمل ، ويمكن الإشارة بطريقة أخرى باستخدام فهرسة الأوراق .. المهم أن توضع اسم ورقة العمل بين أقواس تنصيص (باستخدام Shift + حرف الطاء من لوحة المفاتيح)
بعد الإشارة للمصنف وورقة العمل نأتي للإشارة إلى الخلية في ورقة العمل ، والخلية المطلوبة هنا غير معلومة ، وسنحصل عليها بمعلومية عدد صفوف ورقة العمل وباستخدام الحيلة التي قمنا بها منذ قليل وهي الانتقال لأعلى من أي خلية فارغة في العمود نفسه

للإشارة إلى آخر خلية في العمود نستخدم كلمة Cells ويليها رقم الصف ورقم العمود ما بين قوسين بهذا الشكل:

Cells(Rows.Count, 1)

الجزء الأول يشير لرقم الصف ، وتم استخدام Rows.Count للإشارة إلى آخر صف في العمود وهو الصف رقم 1048576 (في النسخ الجديدة للأوفيس) ، المهم هنا أنه يشير لأكبر رقم صف في العمود ، والجزء الثاني يشير لرقم العمود وهو هنا رقم 1 للإشارة إلى العمود الأول ..أي لو كنت تريد التعامل مع العمود الثالث C على سبيل المثال فيتحتم عليك استخدام الرقم 3 بدلاً من الرقم 1

بعد الإشارة لآخر صف في العمود يتم الانتقال لأعلى باسخدام الجملة:

End(xlUp)

بهذا نكون قد وصلنا لمحطة النهاية وهي الخلية المعنية (التي يهمنا أمرها) ، ولكن بهذا القدر نحصل على الخلية نفسها وليكن A9 ، والمطلوب هو رقم الصف نفسه ، بالتالي نستخدم كلمة Row للحصول على رقم الصف للخلية المعنية

في نهاية المطاف في السطر الثالث نظهر رقم آخر صف في رسالة

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

أخوكم في الله / ياسر خليل أبو البراء




 
 


أثارت هذه المشاركة إعجاب: مدحت حافظ،





26-08-2017 09:56 مساء
مشاهدة مشاركة منفردة [1]
محمد الدسوقى
menu_open
خبير
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 47
المشاركات : 639
الجنس : ذكر
تاريخ الميلاد : 14-10-1973
الدعوات : 55
يتابعهم : 9
يتابعونه : 534
قوة السمعة : 6873
الاعجاب : 246
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
بارك الله فيك أحى الحبيب ياسر على هذا الشرح المستفيض
وأتمنى أن تواصل شروحاتك الغالية بلا فواصل
تقبل تحياتى

أثارت هذه المشاركة إعجاب: مدحت حافظ،




26-08-2017 09:59 مساء
مشاهدة مشاركة منفردة [2]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
جزاك الله خيراً أخي الحبيب محمد الدسوقي ومشكور على كلماتك الطيبة .. وإن شاء الله نواصل تقديم المزيد إذا وجدت طلاب علم يسعون لذلك ..
تقبل وافر تقديري واحترامي

أثارت هذه المشاركة إعجاب: مدحت حافظ،




27-08-2017 08:52 صباحا
مشاهدة مشاركة منفردة [3]
khaled alborene
menu_open
عضو متميز
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 707
الجنس : ذكر
تاريخ الميلاد : 9-9-1990
الدعوات : 2
يتابعهم : 10
يتابعونه : 8
قوة السمعة : 845
الاعجاب : 68
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
اخي الكريم ياسر 
ما الفرق بين المتغير long و integar وباقي لمتغيرات 

أثارت هذه المشاركة إعجاب: مدحت حافظ،




27-08-2017 09:12 صباحا
مشاهدة مشاركة منفردة [4]
ناصر سعيد
menu_open
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 9
المشاركات : 165
الجنس : ذكر
تاريخ الميلاد : 1-1-1985
الدعوات : 1
يتابعهم : 0
يتابعونه : 3
قوة السمعة : 215
الاعجاب : 8
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
استاذ ياسر خليل
جزاك الله كل خير .. الشرح واف وكاف ربنا يحفظك

أثارت هذه المشاركة إعجاب: مدحت حافظ،


توقيع :ناصر سعيد
جزاكم الله خيرا



27-08-2017 10:10 صباحا
مشاهدة مشاركة منفردة [5]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
بارك الله فيكم أخي ناصر سعيد وخالد اليوريني
الفرق بين Integer و Long .. كلاهما يحمل رقم صحيح .. لكن Long في حالة الأرقام التي تتعدي 32 ألف .. لذا يفضل استخدامه في حالة البيانات الكثيرة
جرب الكود التالي وستعرف الفرق .. في آخر متغير اللي هو y هيحدث خطأ لأن تم الإعلان عنه من النوع Integer لكن حمل قيمة كبيرة
Sub Test()
    Dim i As Integer
    Dim x As Long
    Dim y As Integer
    i = 5000
    MsgBox i
    
    x = 500000
    MsgBox x
    
    y = 600000
    MsgBox y
End Sub





27-08-2017 10:23 صباحا
مشاهدة مشاركة منفردة [6]
khaled alborene
menu_open
عضو متميز
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 707
الجنس : ذكر
تاريخ الميلاد : 9-9-1990
الدعوات : 2
يتابعهم : 10
يتابعونه : 8
قوة السمعة : 845
الاعجاب : 68
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
شكرا لك اخي الكريم ياسر
وضحت الصورة 





27-08-2017 10:52 صباحا
مشاهدة مشاركة منفردة [7]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
تمام الحمد لله .. بارك الله فيك أخي خالد لحرضك على التعلم 
ونصيحة اسأل ولا تخجل فخيرلك أن تكون جاهل لساعات قليلة على أن تكون جاهل العمر كله (حكمة)
تقبل تحياتي





27-08-2017 11:32 صباحا
مشاهدة مشاركة منفردة [8]
khaled alborene
menu_open
عضو متميز
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 707
الجنس : ذكر
تاريخ الميلاد : 9-9-1990
الدعوات : 2
يتابعهم : 10
يتابعونه : 8
قوة السمعة : 845
الاعجاب : 68
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
بارك الله فيك اخي الكريم ياسر 
لا لن اخجل من السؤال فبعد كل هذا التجاوب اكون قد ظلمت نفسي في حالة الخجل 
اخي ياسر اتمنى وضع شرح طريقة عمل loop





27-08-2017 12:13 مساء
مشاهدة مشاركة منفردة [9]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
إن شاء الله جاري عمل دروس بشكل متتابع .. تابع قسم الشروحات أولاً بأول للاستفادة من كل ما يقدم ، ومع الوقت ستزداد خبرة إن شاء الله
أرجو أن يكون ما نقدمه نافعاً للجميع





26-09-2017 09:25 صباحا
مشاهدة مشاركة منفردة [10]
tectec
menu_open
عضو
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 697
المشاركات : 2
الجنس : ذكر
تاريخ الميلاد : 1-1-1980
يتابعهم : 0
يتابعونه : 0
قوة السمعة : 12
الاعجاب : 0
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
بارك الله فيكم





26-09-2017 02:26 مساء
مشاهدة مشاركة منفردة [11]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 7255
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 411
قوة السمعة : 20806
الاعجاب : 1454
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
أهلاً بك أخي الكريم ونورت المنتدى
بارك الله فيك وجزاك الله خيراً





05-10-2017 09:54 مساء
مشاهدة مشاركة منفردة [12]
ashrafsharaf
menu_open
عضو مشارك
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 27-08-2017
رقم العضوية : 202
المشاركات : 35
الجنس : ذكر
تاريخ الميلاد : 29-1-1974
يتابعهم : 4
يتابعونه : 4
قوة السمعة : 103
الاعجاب : 1
 offline 
look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
ربنا يبارك فيك استاذ ياسر 
ما الفرق بين وضع الكود فى موديول ووضعة فى ورقة العمل







الكلمات الدلالية
لا يوجد كلمات دلالية ..


 







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



الساعة الآن 02:53 صباحا

أعلن هنا
أعلن هنا
أعلن هنا