لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/24/24 in مقالات البرامج والتطبيقات
-
يحتاج تدقيق البرنامج عند كتابته باستخدام VBA في إكسل إلى إيقاف البرنامج مؤقتًا في نقاط محددة للتعديل والتدقيق ثم إعادة تشغيله عددًا من المرات، مما يحتاج إيجاد أنسب وأسرع الوسائل للإيقاف المؤقت والتشغيل والمراقبة سنستعرض بعضًا منها. تشغيل الشيفرة أو واجهة المستخدم UserForm في VBA Exel يمكن تشغيل الشيفرة في إكسل VBA بثلاث طرائق نختار الأسرع منها أثناء مراقبة سير عمل البرنامج وتتبع الأخطاء: من علامة التبويب Run > Run Sub/UserForm. الضغط على مفتاح الاختصار F5 من لوحة المفاتيح. النقر على زر Run Sub/UserForm من شريط الأدوات. إدراج أو إزالة نقاط توقف مؤقت Toggle Breakpoint في VBA Exel قد نحتاج إلى إيقاف تنفيذ الشيفرة البرمجية مؤقتًا في VBA عند نقطة معينة في البرنامج من أجل ملاحظة النتائج المرحلية عند تلك النقطة وتدقيق عمل البرنامج لإجراء أي تعديلات لازمة. يمكن إدراج نقطة التوقف المؤقت عند سطر برمجي معين لإعطاء الأمر Toggle Breakpoint بخمسة طرائق: نضع المؤشر عند السطر المطلوب، ثم نذهب إلى علامة التبويب Debug > Toggle Breakpoint. النقر بزر الفأرة الأيمن على السطر الذي نريد إدراج نقطة التوقف عنده فتظهر قائمة منسدلة نختار منها Toggle فتظهر قائمة منسدلة جديدة نختار منها Breakpoint. نضع المؤشر عند السطر المطلوب ثم نضغط الزر F9 اختصارًا للخطوة السابقة. ننقر بالمؤشر على الهامش الذي إلى يسار السطر المطلوب. لإدراج نقطة توقف من داخل الشيفرة البرمجية يمكن كتابة الكلمة المفتاحية Stop في السطر الذي يسبق السطر البرمجي الذي نريد إيقاف تنفيذ البرنامج عنده. تؤدي أي من الطرائق السابقة إلى ظهور إشارة مستديرة لونها أحمر داكن أو بني إلى جوار السطر المطلوب في الهامش الرمادي مما يعني أنه تم تعيين نقطة توقف مؤقت عند هذا السطر، ويُميَّز السطر بنفس اللون. إعطاء نفس الأمر مرة ثانية في VBA بأي من الطرائق السابقة يؤدي إلى إزالة نقطة التوقف المؤقت وإزالة الإشارة المستديرة والتمييز من ذلك السطر البرمجي. إن إعطاء الأمر Run لأول مرة في اكسل VBA بوجود نقطة توقف ينفذ الشيفرة البرمجية من بداية البرنامج إلى السطر السابق لنقطة التوقف ليتوقف تنفيذ البرنامج مؤقتًا عند السطر البرمجي الذي وضعنا عنده هذه النقطة ويميز السطر بالأصفر وتظهر إشارة سهم أصفر في الهامش الرمادي إلى يسار ذلك السطر، ويدخل البرنامج في طور الإيقاف المؤقت Break Mode. وفي حال وجود نقاط توقف أخرى فإن تشغيل الشيفرة مرة جديدة يجعل البرنامج يتابع التنفيذ بين نقطتي توقف متتاليتين ابتداءً من نقطة التوقف الأخيرة التي وقف عندها وميزها بالأصفر. مثال: يكتب المثال التالي أرقام الصفوف في المجال C2:F4 بالدخول في حلقتين متداخلتين في الإجراء الأصلي Sub1Write الحلقة i لتحديد رقم الصف والحلقة j لتحديد رقم العمود، بعد إنهاء الحلقتين والخروج منهما يستدعي الإجراء الثاني Sub2Format الذي يلون الخط في خلايا السطر الواحد بنفس اللون بالدخول أيضًا في حلقتين متداخلتين i و j مشابهتين للحلقتين السابقتين. Sub Sub1Write() For i = 2 To 4 For j = 3 To 6 Worksheets("Sheet1").Cells(i, j) = i Next j Next i Call Sub2Format End Sub Sub Sub2Format() For i = 2 To 4 For j = 3 To 6 Worksheets("Sheet1").Cells(i, j).Font.ColorIndex = i + 1 Next j Next i End Sub يمكن إضافة أكثر من نقطة توقف مؤقت لمراقبة سير البرنامج في مراحل مختلفة تكون مفصلية في عمل الشيفرة. ويمكن إدراج نقاط التوقف في أكثر من إجراء لمقاطعة التنفيذ عند الانتقال بين الإجراءات الأصلية والإجراءات المستدعاة. تساعد هذه النقاط في فهم آلية عمل البرنامج بشكل أفضل. حيث يتوقف تنفيذ الإجراء مؤقتًا كلما وصل إلى إحدى تلك النقاط مما يسمح بملاحظة التغييرات الحاصلة. وبتكرار إعطاء الأمر بالتشغيل يدويًا بالضغط على زر F5 أو النقر على زر Run، يتابع البرنامج التنفيذ من نقطة التوقف الحالية حتى نقطة التوقف التالية أو إلى نهاية الشيفرة إن لم توجد نقاط توقف تالية. يمكن إعطاء الأمر بمتابعة تنفيذ خطوة واحدة في VBA فقط بدءًا من نقطة التوقف الحالية بإعطاء الأمر Step Into أو Step Over، أو متابعة التنفيذ من نقطة التوقف الحالية حتى مكان المؤشر باستخدام الأمر Run To Cursor، أو متابعة التنفيذ من نقطة التوقف الحالية إلى نهاية الإجراء باستخدام الأمر Step Out. أو تحديد الخطوة التالية بإعطاء الأمر Set Next Statement ثم نقر الزر Run. غير أن نقاط التوقف المدرجة تستطيع أن تقاطع جميع أوامر التشغيل والخطو السابقة وتوقف التنفيذ عندها. ملاحظة: لا يوجد أي ارتباط بين المتغيرين i و j في الحلقة الأولى في الإجراء الأصلي والمتغيرين i و j في الحلقة الثانية في الإجراء الفرعي، فقد انتهت الحلقتين الأولين في الإجراء الأصلي تمامًا لتبدأ الحلقتين الأخريين في الإجراء الفرعي بقيم i و j جديدة. كما أنه لم يتم تعريف أي من المتغيرين كمتغير عام لذا تمسح قيم كل منهما بمجرد الانتقال بين الحلقتين، باختصار يمكن أن نعتبر المتغيرات i و j في الإجراء الثاني متغيرات جديدة تمامًا كما لو كانا باسمين جديدين k و F. إزالة جميع نقاط التوقف Clear All Breakpoints في VBA Exel عند إضافة عدد كبير من نقاط التوقف في VBA، قد نحتاج إلى إزالتها كلها، ولكن البحث عن كل نقطة توقف وتكرار الأمر Toggle Breakpoint لإزالتها يدويًا واحدة تلو الأخرى يحتاج بعض الوقت. يمكن إزالة جميع نقاط التوقف من علامة التبويب Debug > Clear All Breakpoints أو بالضغط على أزرار الاختصارCtrl+Shift+F9. انظر مجددًا إلى المثال الأول: تشغيل الشيفرة حتى المؤشر Run to Cursor يعمل الأمرRun to Cursor بطريقة مشابهة لنقاط التوقف فيجري تنفيذ الشيفرة أو متابعة تنفيذها حتى يتوقف موضع المؤشر، ولكن لا تبقى نقطة التوقف البنية المستديرة والتمييز البني موجودين هنا كما في الأمر Toggle BreakPoint كما أن تأثيرها يزول بعد انتهاء الأمر Run to Cursor. لتنفيذ الشيفرة حتى مكان المؤشر، نضع المؤشر على السطر الذي نريد إيقاف تنفيذ التعليمات البرمجية مؤقتا فيه ثم نذهب إلى شريط القوائم Debug > Run to Cursor، كما يمكن الضغط على أزرار الاختصار CTRL + F8. تعمل Run to Cursor عندما يكون التطبيق في وضع التصميم، يمكن أن تفيد لتنفيذ عدد كبير من الخطوات البرمجية لا نحتاج إلى مراقبة تفاصيلها كالحلقات الكبيرة مثلًا. كما يمكن استخدام الأمر Run to Cursor للانتقال في تنفيذ الأوامر البرمجية بين نقاط في الإجراءات الأصلية والفرعية المستدعاة. مثال: نطبق الأمر Step into لتنفيذ خطوة واحدة من الشيفرة السابقة من شريط القوائم أو بضغط زر الاختصار F8 ولتجنب الخطوات الكثيرة في الحلقات في كلي الإجراءين نضع المؤشر في المكان الذي نريد التنفيذ عنده ثم نطلب الأمر Run to Cursor من شريط القوائم أو بالضغط على أزرار الاختصار CTRL + F8. تعيين السطر التالي في التنفيذ Set Next Statement في VBA Exel عندما ننتقل في الشيفرة خطوة خطوة نلاحظ أن السطر البرمجي الذي سينفَّذ في الخطوة التالية يميَّز باللون الأصفر مع ظهور سهم أصفر يشير إليه في منطقة الهامش إلى يسار ذلك السطر. يمكن تغيير السطر التالي الذي سينفذ فينتقل التمييز والسهم الأصفر إليه بأحد الطرق الثلاثة التالية: من علامة التبويب Debug > Set Next Statement. نضع المؤشر عند السطر المطلوب ثم نضغط أزرار الاختصار Ctrl +F9 اختصارًا للخطوة السابقة. النقر على السهم الأصفر بزر الفأرة الأيسر وسحبه إلى أي سطر نريد. يؤدي استعمال أي من الأساليب السابقة طبعًا إلى تغيير ترتيب تنفيذ أوامر الشيفرة البرمجية. يفيد هذا بشكل خاص عندما نجري تعديلًا ما في أحد الأسطر بعد أن تم تنفيذه، ونريد إعادة متابعة التنفيذ ابتداءً من هذا السطر. مثال: نشغل الشيفرة السابقة حتى سطر الاستدعاء في الإجراء الأول بإدراج إشارة إيقاف مؤقت Breakpoint عند السطر Call Sub2Format فتُملأ الخلايا بأرقام الأسطر، ثم نكمل التشغيل حتى نهاية الإجراء الثاني المستدعى فيلوَّن الخط بلونٍ دليلُه يساوي رقم الصف +1، نغير الرقم المضاف إلى رقم الصف i والذي يمثل دليل اللون ونعيد تشغيل الحلقة في الإجراء الثاني من بدايتها لنلاحظ تغير لون الخط. ملاحظة: يمكن تطبيق Set Next Statement فقط على الأسطر القابلة للتنفيذ ضمن نفس الإجراء الذي يجري التنفيذ فيه، فلا يمكن الانتقال بين الإجراءات المستدعاة والإجراءات الأصلية. لا يكون الأمر Set Next Statement فعالًا إلا في وضع الإيقاف المؤقت Break Mode بعد أن نكون قد نفذنا جزءًا من الشيفرة. إظهار العبارة البرمجية التالية Show Next Statement في VBA Exel عند استخدام الأمر Show Next Statement في VBA ينتقل مؤشر الكتابة إلى بداية السطر التالي في التنفيذ والذي يكون مميزًا بالأصفر بشكل آلي. يكون هذا الأمر مُفَعَّلًا في وضع الإيقاف المؤقت Break Mode فقط. خاتمة إن مهارة المبرمج في اختيار أماكن الإيقاف المؤقت ومرونته في التشغيل والإيقاف وتحديد نقطة التنفيذ التالية بأكثر من طريقة يسهل عليه معرفة الخلل في الشيفرة في VBA، وذلك من خلال إيقاف البرنامج مؤقتًا في النقاط التي يتوقع أن الخلل فيها أو التي تحوي متغيرات أو تعبيرات برمجية تؤثر على عمل الشيفرة ومن ثم مراقبة قيمها في تلك المرحلة. اقرأ أيضًا التعامل مع الأخطاء في VBA ضمن مايكروسوفت إكسل تصحيح الأخطاء في VBA: الخطأ في الشيفرة صناعة الدوال الخاصة والتعامل مع الأحداث في مايكروسوفت إكسل VBA العمليات الشرطية في مايكروسوفت إكسل باستخدام VBA1 نقطة
-
قد يسهل علينا أثناء كتابة الشيفرة في برمجة VBA ضمن إكسل الإشارة إلى المراجع نسبة إلى الجدول أو المجال الموجودة فيه بدلًا من نسبته إلى ورقة العمل كاملة. سنستعرض أهم الأدوات التي تساعدنا في الإشارة إلى المراجع ضمن مجال في ورقة العمل في VBA Excel. يكون ذلك بالتعامل مع المجال ككائن وإضافة خاصية الصفوف Rows أو الأعمدة Columns أو المجال Range إليه. الإشارة إلى صفوف في مجال Range.Rows في VBA Exel يشار إلى الصفوف داخل مجال في إكسل VBA بالصيغة التالية: Range.Rows وترجع كائن مجال يمثل الصفوف الموجودة في المجال. حيث أن الخاصية Rows تعمل نسبةً للكائن Range المذكور قبلها في الشيفرة، وليس نسبةً لجدول البيانات بأكمله. مثال: الإجراء التالي يحدد الصف الثاني في المجال C3:I9 Worksheets("Sheet1").Range("C3:I9").Rows(2).Select الإشارة إلى أعمدة في مجال في VBA Exel يشار إلى الصفوف داخل مجال بالصيغة التالية: Range.Columns ترجع كائن مجال يمثل الأعمدة الموجودة في المجال. حيث أن الخاصية Columns تعمل نسبةً للكائن Range المذكور قبلها في الشيفرة، وليس نسبةً لجدول البيانات بأكمله. مثال: الإجراء التالي يحدد العمود الثالث في المجال C3:I9 Worksheets("Sheet1").Range("C3:I9").Columns(3).Select مثال: يلون الإجراء التالي الصف الثاني ثم يلون العمود الثالث في المجال C3:I9 باللون الزهري: Sub RangeRowsColumns() Worksheets("Sheet1").Range("C3:I9").Rows(2).Select Worksheets("Sheet1").Range("C3:I9").Columns(3).Select End Sub ملاحظة: عندما تطبق هاتان الخاصيتان على كائن مجال متعدد التحديد، ترجعان الصفوف والأعمدة في المنطقة الأولى فقط للمجال متعدد المناطق. مثال: يلون الإجراء التالي الصف الثاني ثم يلون العمود الثالث في التحديد باللون الزهري، فإذا حددنا أكثر من مجال طبق الإجراء على المجال الذي حددناه أولًا فقط. Sub RangeRowColٍSelection() Application.Selection.Rows(2).Interior.ColorIndex = 7 Application.Selection.Columns(3).Interior.ColorIndex = 7 End Sub ملاحظة: إذا نسبنا الصفوف أو الأعمدة إلى كائن ورقة العمل بشكل مباشر أشارت إلى صفوف وأعمدة في ورقة العمل عمومًا، ويعتبر هذا هو الخيار الافتراضي لكائني الصف والعمود، فإذا لم ننسب الصف أو العمود إلى كائن أشارا إلى صف أو عمود في كامل رقة العمل. مثال: فلتحديد الصف الثالث من الورقة Sheet1 يمكن استخدام أي من الشيفرتين التاليتين: Rows(3).Select Worksheets("Sheet1").Rows(3).Select الإشارة إلى الصف أو العمود الأخير في مجال معين في إكسل VBA إذا كان عدد الصفوف متغيرًا وفقًا للإدخالات اليدوية يمكن الإشارة إلى المجال لتنسيقه مثلًا أو إجراء عمليات حسابية أو منطقية عليه. يشار إلى ترتيب الصف الأخير في ورقة العمل باستخدام الخاصية Range.Rows.Count والتي ترجع عدد الصفوف في المجال. ويشار إلى ترتيب العمود الأخير في ورقة العمل باستخدام الخاصية Range.Columns.Count والتي ترجع عدد الأعمدة في المجال. يرجع الإجراء التالي عدد صفوف المجال C2:I9 في الخلية A1. ويرجع عدد أعمدته في الخلية في الخلية A2، ثم يكتب 7 في آخر خلية في المجال ثم يحددها. Sub LastRangeCell() Worksheets("Sheet1").Cells(1, 1) = Range("C2:I9").Rows.Count Worksheets("Sheet1").Cells(2, 1) = Range("C2:I9").Columns.Count Cells(Range("C2:I9").Rows.Count, Range("C2:I9").Columns.Count) = 7 Cells(Range("C2:I9").Rows.Count, Range("C2:I9").Columns.Count).Select End Sub الإشارة إلى مجال ضمن مجال آخر Range.Range في VBA Exel يشار إلى مجال داخل مجال آخر باستخدام الخاصية Range المتعلقة بالكائن Range: Range.Range ملاحظة: يمكن تطبيق الخاصية Range على نوعين من الكائنات: كائنات ورقة العمل أو كائنات المجال. فتطبيق خاصية المجال على كائن المجال Range.Range يشير إلى مجال داخل مجال آخر. في حين أن تطبيق خاصية المجال على كائن ورقة العمل Worksheets.Range يشير إلى مجال يتعلق بورقة العمل بأكملها. باستخدام الخاصية Range يمكن تغيير خصائص كامل المجال أو تطبيق تابع على جميع خلاياه مرة واحدة. حيث يجري التعامل مع المجال ككائن، واي خاصية تأتي بعده تطبق على هذا الكائن. مثال: يعرف الإجراء التالي متغيرًا يسميه OriginalRange ككائن مجال. Dim OriginalRange As Range ثم يسند إليه المجال C3:I9 من الورقة Sheet1. Set OriginalRange = Worksheets("Sheet1").Range("C3:I9") ثم ينسق خلاياه بإحاطتها بحدود ذات خط مستمر OriginalRange.Borders.LineStyle = xlContinuous هنا الخاصية Range تتبع ورقة العمل بأكملها حيث أنها أسندت إلى كائن ورقة العمل، نريد الآن تحديد المجال الذي يمتد بدءًا من الخلية الواقعة في الصف الثاني والعمود الثاني من المجال OriginalRange (الخلية D4) إلى الخلية الواقعة في الصف الرابع والعمود الخامس منه (الخلية G6). يمكن أن نسمي الخلية التي اسمها D4 نسبة لورقة العمل بالاسم B2 نسبة للمجال OriginalRange حيث أنها تقع في الصف الثاني والعمود الثاني منه. و نسمي الخلية التي اسمها G6 نسبة لورقة العمل بالاسم E4 نسبة للمجال OriginalRange حيث أنها تقع في الصف الرابع والعمود الخامس منه. فلتحديد المجال D4:G6 يمكن استخدام الشيفرة التالية: OriginalRange.Range("B2:E4").Select فتكون كامل الشيفرة: Sub RangeRange() Dim OriginalRange As Range Set OriginalRange = Worksheets("Sheet1").Range("C3:I9") OriginalRange.Borders.LineStyle = xlContinuous OriginalRange.Range("B2:E4").Select End Sub ملاحظة: لقد استخدمنا في المثال السابق اسم المجال OriginalRange عوضًا عن عنوانه في ورقة العمل Worksheets("Sheet1").Range("C3:I9") ومع ذلك، فعند استخدام أي منهما يعطي نفس النتيجة. الإشارة إلى المجال المستخدم في ورقة العمل في إكسل VBA يشار إلى المجال المستخدم في ورقة العمل باستخدام الخاصية Worksheets("اسم ورقة العمل").UsedRange كما يمكن استخدامها كخاصية تابعة لورقة العمل النشطة: ActiveSheet.UsedRange وترجع كائن مجال يمثل المجال الذي استُخدم في ورقة العمل. مثال: يحدد الإجراء التالي المجال المستخدم في ورقة العمل. نلاحظ أن المجال المشار إليه يتضمن جميع الخلايا بين أول وآخر خلية تحوي قيمةً أو تنسيقًا بما في ذلك كافة الفراغات التي بينهما. Sub MyUsedRange1() ActiveSheet.UsedRange.Select End Sub الإشارة إلى أطراف المجال في VBA Exel يشار إلى أطراف المجال باستخدام الخاصية End التي تنسب إلى المجال المصدر قبلها، ويأتي بعدها الاتجاه الذي يحدد منه طرف المجال. تكتب بالصيغة: Range(المجال الصدر).End(الاتجاه) المجال المصدر هو خلية مفردة يتحدد من صفها أو عمودها طرف المجال المطلوب، فإذا كان المجال المصدر مكونًا من أكثر من خلية اعتمدت الشيفرة على أول خلية فيه لتحديد طرف المجال. تنطلق الشيفرة من الخلية المصدر إلى الاتجاه المذكور لتقف عند أول خلية مليئة تصادفها تليها خلية فارغة. تُرجع الخاصية End كائن مجال يمثل الخلية الموجودة في نهاية المنطقة التي تحوي المجال المصدر وفق الاتجاه المذكور. تماثل في إكسل الضغط على زر END مع أزرار أسهم الاتجاهات الأربعة في لوحة المفاتيح. يبين الجدول التالي رموز الاتجاهات في VBA. table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } الرمز القيمة الاتجاه xlUp -4162 أعلى xlDown -4121 أسفل xlToRight -4161 إلى اليمين xlToLeft -4159 إلى اليسار يمكن كتابة الاتجاه بين قوسين في صيغة الشيفرة برمزه المبين في الجدول أو بقيمته الرقمية المبينة. مثال: يحدد الإجراء التالي أطراف المجال المكتوب انطلاقًا من الخلية المصدر H6 وفق الاتجاهات الأربعة على التوالي، طرف المجال هو نهاية الصف أو العمود الذي يمر من الخلية المصدر التي بداخله على أن تكون الخلايا بين الخلية المصدر وطرف المجال كلها مليئة ليس بينها خلايا فارغة: Sub RangeEnd() Range("H6").End(xlUp).Select Range("H6").End(xlDown).Select Range("H6").End(xlToRight).Select Range("H6").End(xlToLeft).Select End Sub كما يمكن كتابة الشيفرة بالرموز الرقمية للاتجاهات وتعطي نفس النتيجة: Sub RangeEnd2() Range("H6").End(-4162).Select Range("H6").End(-4121).Select Range("H6").End(-4161).Select Range("H6").End(-4159).Select End Sub ملاحظة: يجب أن تكون المنطقة من الخلية المصدر وفق الاتجاه المذكور عبارة عن خلايا متجاورة مليئة لا يفصل بينها خلايا فارغة. فإذا فصلت بينها خلايا فارغة انتهى المرجع إلى أول خلية مليئة تليها خلية فارغة. كما أن مدى المنطقة يتعلق فقط بصف وعمود الخلية المرجع وقد يكون أطول أو أقصر من مدى الأعمدة أو الصفوف المجاورة. مثال: نطبق الشيفرة السابقة على نهايات المجالات التي تمر من H6 في حالتين: الأولى المجالات أطول من مجاوراتها، والثانية نقطع مجالات الصفوف والأعمدة التي تمر من H6 بمسح محتويات أحد الخلايا من كل جانب ثم نقوم بتمييز الخلايا الفارغة لملاحظة التحديد الذي ينفذه الإجراء بعد التغيير: ملاحظة: إذا كانت الخلايا من المجال المصدر إلى الاتجاه المذكور عبارة عن خلايا فارغة، عندها تشير الشيفرة إلى نهايات ورقة الإكسل كاملة وفق تلك الاتجاهات. مثال: إذا طبقنا الإجراء السابق على نفس الجدول ومسحنا صف الخلية المصدر H6 وعمودها كاملين يحدد Range("H6").End(xlToRight).Select الخلية XFD6 الموجودة في الصف 6 نفسه والعمود XFD الذي هو آخر عمود في إكسل، كما يحدد Range("H6").End(xlDown).Select الخلية H1048576 المجودة في الصف رقم 1048576 الذي هو آخر صف في إكسل والعمود H. ملاحظة: إذا كانت المنطقة المحيطة بالخلية المصدر خلايا فارغة يليها خلايا مليئة انتقل التحديد إلى أقرب خلية مليئة من الخلية المصدر. مثال: نطبق الشيفرة السابقة على مجال يحوي خلية مصدر محاطة بخلايا فارغة يليها خلايا مليئة: يمكن استخدام الصيغة Range.End للإشارة إلى خلية البداية أو خلية النهاية لمجال. مثال: يحدد المثال التالي المجال من الخلية G9 إلى خلية النهاية العليا للمجال المكتوب انطلاقًا من الخلية المصدر H6 والتي تمثلها الصيغة Range("H6").End(xlUp)، ثم يحدد المجال من الخلية G9 إلى خلية النهاية اليسرى للمجال المكتوب انطلاقًا من الخلية المصدر H6 والتي تمثلها الصيغة Range("H6").End(xlToTeft): Sub RangEndSelect() Range("G9", Range("H6").End(xlUp)).Select Range(Range("H6").End(xlToTeft) ,"G9").Select End Sub مثال: يحدد المثال التالي المجالات انطلاقاً من الخلية المصدر إلى أطراف المجال الأربعة على التوالي: Sub Rang4EndSelect() Range("H6", Range("H6").End(xlUp)).Select Range(Range("H6").End(xlDown), "H6").Select Range(Range("H6").End(xlToRight), "H6").Select Range(Range("H6").End(xlToLeft), "H6").Select End Sub الخاتمة تعد الإشارة إلى المراجع ضمن مجال في ورقة العمل من الأساليب المهمة للإشارة إلى المجالات وتستخدم مختلف الصيغ لتختصر الوقت والجهد أثناء كتابة الشيفرات المتعلقة بالمجالات المكتوبة. وينبغي أن ننوه أنه على المبرمج حين يستخدم أية تابع أو صيغة برمجية أن يعرف كل تفاصيلها في جميع حالاتها تجنبًا لوقوعه في الأخطاء أولًا، وحتى يكتسب مهارات دقيقة تمكنه من حل المشاكل البرمجية بأقصر وأدق الأساليب. اقرأ أيضًا برمجة واجهات إدخال البيانات باستخدام مايكروسوفت إكسل VBA المتغيرات وأهم الكائنات في برمجة VBA في مايكروسوفت إكسل العمليات الشرطية في مايكروسوفت إكسل باستخدام VBA صناعة الدوال الخاصة والتعامل مع الأحداث في مايكروسوفت إكسل VBA التعامل مع الأخطاء في VBA ضمن مايكروسوفت إكسل1 نقطة