logo

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



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





26-08-2017 09:11 مساءً
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191

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


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


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


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

CODE
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 لترى ما تم تسجيله ، ستجد الشكل التالي :<code> </code>

CODE
Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.End(xlUp).Select
End Sub


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


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


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


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

CODE
Cells(Rows.Count, 1)<br />

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


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

CODE
End(xlUp)<br />

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


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


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

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

 
 


أثارت هذه المشاركة إعجاب: hassona229،



look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  26-08-2017 09:56 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 47
المشاركات : 820
رصيد العضو : 0
الجنس :
تاريخ الميلاد : 14-10-1973
الدعوات : 79
قوة السمعة : 8468
الاعجاب : 12
بارك الله فيك أحى الحبيب ياسر على هذا الشرح المستفيض
وأتمنى أن تواصل شروحاتك الغالية بلا فواصل
تقبل تحياتى




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




look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  27-08-2017 08:52 صباحاً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 834
رصيد العضو : 0
الدولة : الاردن
الجنس :
تاريخ الميلاد : 9-9-1990
الدعوات : 2
قوة السمعة : 988
الاعجاب : 0
اخي الكريم ياسر
ما الفرق بين المتغير long و integar وباقي لمتغيرات




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



توقيع :الاستاذ محمدي عبدالسميع
جزاكم الله خيرا

look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  27-08-2017 10:10 صباحاً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
بارك الله فيكم أخي ناصر سعيد وخالد اليوريني
الفرق بين Integer و Long .. كلاهما يحمل رقم صحيح .. لكن Long في حالة الأرقام التي تتعدي 32 ألف .. لذا يفضل استخدامه في حالة البيانات الكثيرة
جرب الكود التالي وستعرف الفرق .. في آخر متغير اللي هو y هيحدث خطأ لأن تم الإعلان عنه من النوع Integer لكن حمل قيمة كبيرة
CODE
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




look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  27-08-2017 10:23 صباحاً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 22-08-2017
رقم العضوية : 16
المشاركات : 834
رصيد العضو : 0
الدولة : الاردن
الجنس :
تاريخ الميلاد : 9-9-1990
الدعوات : 2
قوة السمعة : 988
الاعجاب : 0
شكرا لك اخي الكريم ياسر
وضحت الصورة




look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  27-08-2017 10:52 صباحاً   [7]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
تمام الحمد لله .. بارك الله فيك أخي خالد لحرضك على التعلم
ونصيحة اسأل ولا تخجل فخيرلك أن تكون جاهل لساعات قليلة على أن تكون جاهل العمر كله (حكمة)
تقبل تحياتي

أثارت هذه المشاركة إعجاب: hassona229،



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




look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  27-08-2017 12:13 مساءً   [9]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
إن شاء الله جاري عمل دروس بشكل متتابع .. تابع قسم الشروحات أولاً بأول للاستفادة من كل ما يقدم ، ومع الوقت ستزداد خبرة إن شاء الله
أرجو أن يكون ما نقدمه نافعاً للجميع




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




look/images/icons/i1.gif إيجاد الصف الأخير (درس للمبتدئين)
  26-09-2017 02:26 مساءً   [11]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10534
رصيد العضو : 3
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36769
الاعجاب : 191
أهلاً بك أخي الكريم ونورت المنتدى
بارك الله فيك وجزاك الله خيراً




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




اضافة رد جديد اضافة موضوع جديد
الصفحة 2 من 3 < 1 2 3 >





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









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

الساعة الآن 02:06 AM