السلام عليكم
الرقم 1000 في أول الكود هو عنوان في الكود نفسه لأنه مسبوق بأمر GOTO
وهو بالتحديد آخر سطر قبل نهاية الكود
وهذا يعني أنك تأمر الإكسل (On Error في حالة وجود خطأ) أن يذهب إلي العنوان 1000 ومن ثم ينهي الكود
وتستطيع تغيير هذا الرقم كما تشاء ولكن في الموضعين بعد أمر GOTO في أول الكود وآخر سطر قبل نهاية الكود
أما الرقم 2000 في الأمر For i = 13 To Sheets(1).Cells(2000, 3).End(xlUp).Row
أو x = Cells(2000, 16).End(xlUp).Row + 1
يعني أنك تطلب العداد i يبدأ من 13 إلي رقم آخر تصاعديا
وهذا يعني الرقم الآخر للعداد i = يحصل عليه الإكسل كالآتي
رقم الصف الذي عند الذهاب للخلية 2000, 3 (سطر 2000 عمود 3) ثم لأعلي End(xlUp) إلي أن يقابل خلية بها بيانات
بمعني آخر آخر خلية بها بيانات بفرض أن البيانات لن تتجاوز 2000
وطبعا تستطيع زيادة هذا الرقم حتي الحد الأقصي لعدد الصفوف بالإكسل الذي تستخدمه (65536) في حالة إكسل 2003
وأما الرقم 16 في الأمر x = Cells(2000, 16).End(xlUp).Row + 1
يعني تقريبا مثل السابق ولكن بالنسبة للعامود 16 الذي به أعمال السنة وليس العامود 3 الذي به أسماء التلاميذ
المهم تختار عامود به بيانات متصلة لضمان الوصول لآخر صف بيانات فلا يجوز مثلا إختيار العامود 4 ولا 5 ولا 6 ولا 13 ولا 14 ولا 15
راجع الصورة السابقة