كيفية إظهار كافة الأعمدة باستخدام VBA (مع مثال)

دليل أكاديمي مفصل يشرح كيفية إظهار كافة الأعمدة المخفية في برنامج Excel باستخدام كود VBA وخاصية Hidden، متضمناً أمثلة عملية وشرحاً برمجياً معمقاً.

Mohammed looti أكاديمي وباحث متخصص في علم النفس
تاريخ النشر
تمت المراجعة العلمية · د. مروة عبد العظيم · 22 أكتوبر، 2026
مراجعة وتدقيق علمي معتمد تاريخ التدقيق: 22 أكتوبر، 2026
د. مروة عبد العظيم دكتوراه في علم النفس
عضو هيئة التدريس • جامعة كربلاء
معايير التدقيق والاعتماد السريري

يخضع هذا المحتوى لمعايير ضبط الجودة والتدقيق العلمي والأكاديمي الصارمة في شبكة علم النفس العربي، لضمان صحة المعلومات ودقتها السريرية ومطابقتها لأحدث الأدلة والبراهين الصادرة عن الجمعيات النفسية والطبية المعتمدة (APA / WHO).

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

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

يقدم هذا المقال دراسة تأصيلية وتطبيقية شاملة لكيفية استعادة وإظهار كافة الأعمدة المخفية في مايكروسوفت إكسيل باستخدام لغة فيجوال بيسك للتطبيقات (Visual Basic for Applications – VBA). سنستعرض في هذه الدراسة الأسس النظرية لنموذج كائنات إكسيل، والآليات البرمجية الكامنة وراء خاصية الحجب، إضافة إلى بناء وحدات برمجية متكاملة تتراوح بين المعالجة اللحظية للورقة النشطة والتنفيذ الشامل عبر كافة أوراق العمل، مع مراعاة أفضل ممارسات تحسين الأداء وإدارة الذاكرة والتكامل الأمني في بيئات الأعمال المعقدة.

1. مقدمة تأصيلية حول إدارة الأعمدة المخفية في Excel عبر VBA

1.1 مفهوم إخفاء البيانات وأثره التنظيمي والتشغيلي

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

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

1.2 ماهية بيئة التطوير Visual Basic for Applications (VBA)

تُعد لغة فيجوال بيسك للتطبيقات (VBA) إحدى الركائز البرمجية التي طورتها شركة مايكروسوفت منذ إطلاقها التاريخي مع الإصدار الخامس من برنامج إكسيل عام 1993 كبديل متقدم للغات الماكرو السابقة. وتعتمد هذه البيئة على نموذج الكائنات الموزعة ومفهوم البرمجة الموجهة بالأحداث (Event-Driven Programming)، حيث تتيح للمطورين التفاعل المباشر مع مكونات التطبيق الداخلية والتحكم في بنيته التشغيلية.

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

1.3 الفروق التقنية بين الإظهار اليدوي والإظهار البرمجي

تفرض واجهة المستخدم الرسومية (GUI) قيوداً هيكلية عند التعامل مع ملفات العمل المعقدة؛ إذ يتطلب إظهار الأعمدة يدوياً تحديد الأعمدة المحيطة بدقة ثم الضغط على خيارات القوائم، وهي عملية تصبح بالغة التعقيد إذا كانت الأعمدة المخفية تقع في أقصى يمين أو يسار الصفحة مثل العمود A، أو عند انتشار الأعمدة المحجوبة عشوائياً بين مئات الأعمدة الأخرى.

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

2. البنية النحوية والخصائص البرمجية لخاصية Hidden في كائن Columns

2.1 تشريح كائن Range وكائن Columns في نموذج كائنات إكسيل

يتأسس نموذج كائنات إكسيل (Excel Object Model) على هيكلية تسلسلية صارمة تبدأ من كائن التطبيق الأساسي (Application)، وتتفرع وصولاً إلى كائنات المصنف، ثم كائنات أوراق العمل، حتى تصل إلى نطاقات الخلايا. وفي هذا السياق، يشكل كائن الأعمدة (Columns) تمثيلاً متخصصاً لمصفوفة من كائنات النطاقات (Range Object)، حيث يرمز لكل مسار رأسي ككتلة بيانات متكاملة.

ترتبط ورقة العمل (Worksheet) بمجموعتها الكاملة من الأعمدة عبر خاصية Columns، والتي تشمل إجمالاً 16,384 عموداً في الصيغ الحديثة الممتدة (.xlsx و.xlsm). وعند استدعاء خاصية الأعمدة على مستوى ورقة العمل أو على كائن Cells الشامل، يتم التعامل مع الفضاء الجدولي بأكمله ككيان متصل، مما يمنح المطورين القدرة على مخاطبة البنية الفيزيائية للجدول وتغيير إعداداتها دفعة واحدة دون الحاجة إلى معالجة كل خلية بشكل مستقل.

2.2 التحليل البرمجي لخاصية EntireColumn.Hidden والقيم البولينية

تُعد خاصية Hidden التابعة لكائن EntireColumn خاصية منطقية من النوع البوليني (Boolean)، مما يعني أنها لا تقبل سوى إحدى حالتين ثنائيتين: إما الإيجاب (True) أو النفي (False). وتعمل هذه الخاصية كمفتاح تحكم في خوارزمية الرسم البصري لواجهة المستخدم في محرك إكسيل.

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

2.3 المعالجة الدقيقة لقيمة False وتأثيرها التنفيذي الفوري

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

من الضروري التمييز التقني الحاسم بين استخدام خاصية Hidden = False وتعديل خاصية عرض العمود ColumnWidth؛ فعند إسناد القيمة False، يستعيد إكسيل تلقائياً الأبعاد السابقة للعمود المخفي، في حين أن محاولة تعديل العرض يدوياً عبر الكود قد تطمس القياسات المخصصة وتفرض قياساً موحداً يشوه المظهر الجمالي للتقارير المجدولة سلفاً.

3. الدليل الإجرائي: إعداد بيئة العمل وإنشاء ماكرو إظهار الأعمدة

3.1 تفعيل علامة تبويب المطور (Developer Tab) والوصول للمحرر

تأتي بيئة تطوير التطبيقات معطلة افتراضياً في إعدادات التثبيت القياسية لمايكروسوفت إكسيل، لحماية المستخدم العادي من تشغيل تعليمات غير مقصودة. ولتمكين هذه الأدوات المتقدمة، يتعين على المطور الانتقال إلى قائمة “ملف” (File)، ثم اختيار “خيارات” (Options)، والولوج إلى قسم “تخصيص الشريط” (Customize Ribbon). ومن خلال القائمة الفرعية لعلامات التبويب الرئيسية، يتم وضع علامة الاختيار بجانب علامة تبويب “المطور” (Developer) ثم النقر على زر الموافقة.

بمجرد تفعيل الشريط، يمكن للمستخدم فتح نافذة محرر الفيجوال بيسك (Visual Basic Editor – VBE) إما بالنقر على أيقونة المحرر في أقصى يسار شريط المطور، أو بالاعتماد على الاختصار القياسي السريع من لوحة المفاتيح Alt + F11. تفتح هذه الواجهة المتخصصة مساحة العمل البرمجية، حيث تظهر لوحة “مستكشف المشاريع” (Project Explorer) التي تحتوي على الهيكل الشجري للمصنفات المفتوحة، ولوحة الخصائص (Properties Window)، إضافة إلى فضاء تحرير الأكواد.

3.2 إدراج وحدة نمطية جديدة (Standard Module) وتنسيق الكود

لتطبيق التعليمات البرمجية المستقلة، يجب عزل الأكواد العامة عن كائنات أوراق العمل المحددة، وذلك بإنشاء وحدة نمطية قياسية (Standard Module). يتم ذلك بالنقر بزر الفأرة الأيمن على اسم المصنف داخل نافذة مستكشف المشاريع، ثم التوجه إلى خيار “إدراج” (Insert) واختيار “وحدة نمطية” (Module). يُنشئ هذا الإجراء صفحة بيضاء مخصصة لتضمين الإجراءات العامة القابلة للاستدعاء عبر كامل نطاق المصنف.

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

Sub UnhideAllColumnsActiveSheet()
    ' هذا الإجراء يقوم بإلغاء إخفاء كافة أعمدة الورقة النشطة دفعة واحدة
    ActiveSheet.Cells.EntireColumn.Hidden = False
End Sub

3.3 آليات تشغيل الماكرو وتصحيح الأخطاء المحتملة

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

في المقابل، تبرز أهمية التنفيذ المرحلي التدريجي باستخدام مفتاح F8 (Step Into)، وهي تقنية حيوية تتيح تتبع سريان التعليمات سطراً بسطر لمراقبة التغيرات السلوكية للكائنات في الذاكرة. وتساعد هذه الآلية في التأكد من غياب الأخطاء التركيبية والتجميعية (Compile Errors) قبل اعتماد الماكرو للنشر النهائي، مما يضمن استقرار البيئة البرمجية وموثوقيتها التشغيلية الكاملة.

4. نموذج تطبيقي عملي: دراسة حالة جدول بيانات لاعبي كرة السلة

4.1 تهيئة مجموعة البيانات الافتراضية وتحديد المتغيرات

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

  • العمود A: يمثل المعرف الرقمي الفريد للاعب (Player ID)، وهو الحقل الأساسي المستخدم في عمليات الربط والبحث المرجعي.
  • العمود B: يشتمل على الاسم الكامل للاعب (Full Name)، ويشكل المعلم البصري الأهم للتعرف على البيانات.
  • العمود C: يتضمن مركز اللاعب الميداني داخل الملعب (Position).
  • العمود D: يحوي إجمالي عدد المباريات الملعوبة (Games Played).
  • العمود E: يسجل مجموع النقاط المحرزة على مدار الموسم (Total Points).

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

4.2 محاكاة إخفاء الأعمدة A وB وتحليل المشهد الناتج

في سياق إعداد العروض التقديمية لفرق الإدارة الفنية، قد يُطلب من المحلل استعراض الأرقام الإحصائية المجردة للمراكز والنقاط دون ربطها الفوري بهوية اللاعبين لتجنب الانحياز التقييمي. ولتحقيق ذلك يدوياً، يقوم المحلل بتحديد العمودين A وB، والنقر بزر الفأرة الأيمن واختيار أمر “إخفاء” (Hide). نتيجة لهذا الإجراء، يختفي العمودان من الشاشة، وتتحول بداية الجدول الظاهر مباشرة إلى العمود C.

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

4.3 تطبيق ماكرو UnhideAllColumns وملاحظة الاستجابة اللحظية

عندما تقتضي متطلبات العمل استعادة المشهد الكامل للبيانات، يصبح الانتقال اليدوي غير فعال، خاصة مع صعوبة سحب الخط الفاصل للعمود A المخفي في بداية الورقة. في هذه اللحظة، يتم استدعاء الماكرو البرمجي UnhideAllColumnsActiveSheet الذي جرى بناؤه سابقاً، لينفذ الأمر المباشر ActiveSheet.Cells.EntireColumn.Hidden = False.

تحدث الاستجابة فورياً في كسر من الثانية؛ إذ يوجه محرك VBA تعليمات إعادة الرسم إلى محرك الإكسيل، فتنفرج المسافة المحجوبة ليعود العمودان A وB إلى موقعهما الطبيعي، محتفظين بكامل التنسيقات الأصلية والخطوط وعروض الأعمدة المحددة سلفاً. يؤكد هذا التطبيق العملي استعادة التماسك الهيكلي للبيانات بطريقة برمجية محكمة تزيل العبء الذهني وتمنع حدوث أي أخطاء عرض عارضة.

5. التوسع البرمجي: إظهار كافة الأعمدة عبر كافة أوراق العمل في المصنف

5.1 بنية التكرار الحلقي For Each والتعامل مع كائن Worksheet

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

تتعامل بنية التكرار الحلقي For Each مع مجموعة كائنات أوراق العمل (Worksheets Collection) التابعة للمصنف المستهدف ككل مصفوفي متصل. يُعلن المبرمج عن متغير كائني يمثل ورقة العمل بصيغة Dim ws As Worksheet، ليتولى المحرك بعد ذلك إدارة مؤشر الدوران، حيث يمر عبر كل عنصر ورقة موجود، وينفذ حزمة التعليمات المحددة داخل فضاء الحلقة بصورة تتابعية منتظمة ومستقلة عن أي تدخل بشري.

5.2 صياغة الماكرو الموسع UnhideAllColumnsAllSheets

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

Sub UnhideAllColumnsAllSheets()
    ' إعلان المتغير الممثل لكل ورقة عمل
    Dim ws As Worksheet
    
    ' بدء التكرار الحلقي عبر كافة أوراق عمل المصنف الحالي
    For Each ws In ThisWorkbook.Worksheets
        ' إلغاء إخفاء كافة أعمدة الورقة المحددة في الدورة الحالية
        ws.Cells.EntireColumn.Hidden = False
    Next ws
End Sub

يتدفق هذا الكود وفق منطق تسلسلي منظم؛ حيث يبدأ بقراءة أول ورقة عمل في المصنف التابع (ThisWorkbook)، ويطبق أمر إسناد القيمة المنطقية False لخاصية الإخفاء لجميع خلاياها، ثم ينتقل بسلاسة عبر التعليمة Next ws إلى الورقة التالية، مستمراً حتى استنفاذ كافة عناصر المجموعة.

5.3 المقارنة التحليلية بين معالجة الورقة الواحدة وكافة الأوراق

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

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

6. تقنيات تحسين الأداء وإدارة الموارد أثناء التنفيذ

6.1 تعطيل تحديث الشاشة باستخدام Application.ScreenUpdating

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

لتحييد هذا الهدر الحاسوبي، توفر لغة VBA خاصية Application.ScreenUpdating التي تتيح إيقاف تفاعل الشاشة مؤقتاً أثناء تدفق الأوامر. يتم تعيين هذه الخاصية إلى القيمة False في مستهل الإجراء البرمجي لتجميد التحديث المرئي، ثم يُعاد إسناد القيمة True في خاتمة الإجراء بعد اكتمال سريان العمليات، مما يقلص زمن التنفيذ بنسبة كبيرة ويعزز استقرار التطبيق وسلاسته البصرية.

6.2 إدارة نمط الحساب التلقائي عبر Application.Calculation

يحتوي العديد من مصنفات الأعمال المتقدمة على آلاف المعادلات الرياضية المتقاطعة والدوال الحسابية المعقدة (مثل INDEX/MATCH وVLOOKUP والصيغ المصفوفية الحديثة). عند تعديل حالة رؤية الأعمدة، قد يقوم محرك الحسابات في إكسيل بإعادة جدولة احتساب بعض الصيغ المرتبطة بالنطاقات المتأثرة، مما يسبب تجمد الواجهة وتأخير انتهاء الماكرو.

يتحقق الحل المثالي عبر إدارة نمط الحساب برمجياً عبر الكائن Application.Calculation؛ حيث يتم تبديل النمط التلقائي إلى النمط اليدوي (xlCalculationManual) قبل تنفيذ حلقة المعالجة، لمنع إطلاق أي دورات حسابية غير ضرورية. وبمجرد الانتهاء من فك حجب الأعمدة، يُعاد النمط الأصلي فوراً إلى الحساب التلقائي (xlCalculationAutomatic) لضمان اتساق القيم الحسابية وتطابقها دون المساس بكفاءة الأداء.

6.3 إدارة أحداث النظام وتعطيل الرسائل التنبيهية

تتفاعل بيئة إكسيل البرمجية عادةً مع الأحداث التشغيلية التي تقع أثناء العمل من خلال اعتراض الأحداث (Event Interruption)، كإطلاق إجراءات الأحداث التلقائية مثل Worksheet_Calculate أو رسائل التنبيه الحوارية للنظام. وخلال عمليات المعالجة المكثفة للأعمدة، قد يؤدي استدعاء هذه الأحداث بصورة غير مقصودة إلى دخول النظام في دوامات تنفيذية غير مرغوب فيها.

يتطلب المسار الاحترافي لتحسين الأكواد البرمجية تعطيل اعتراض الأحداث عبر إسناد القيمة المنطقية False للخاصية Application.EnableEvents، بالتوازي مع تعطيل رسائل النظام التنبيهية باستخدام Application.DisplayAlerts = False. ويضمن هذا الإجراء تحييد أي مقاطعات خارجية وتأمين أداء خطي فائق السرعة، مع ضرورة الالتزام بإعادة تفعيل كافة تلك الخصائص فور اكتمال الماكرو لتجنب شل التفاعلية الطبيعية للتطبيق.

7. معالجة الأخطاء والقيود الأمنية في بيئات العمل الحقيقية

7.1 استراتيجيات تجاوز أخطاء الأوراق المحمية بكلمات مرور

أحد أكثر العوائق التشغيلية شيوعاً في بيئات الأعمال عند محاولة إدارة الأعمدة برمجياً هو تفعيل خيارات حماية الأوراق (Sheet Protection). إذا كانت ورقة العمل محمية وكانت خاصية تنسيق الأعمدة مقفلة، فإن محاولة تنفيذ الأمر البرمجي لإظهار الأعمدة ستؤدي حتماً إلى تعطل الماكرو وظهور خطأ التشغيل الشهير (Run-time error ‘1004’: “Unable to set the Hidden property of the Range class”).

لتفادي هذا العطل غير المقبول برمجياً، يلزم فحص حالة الحماية مسبقاً باستخدام الخصائص الشرطية لكائن الورقة مثل ws.ProtectContents. وإذا كانت الورقة محمية، يقوم الكود البرمجي بفك الحماية مؤقتاً عبر استدعاء الأسلوب ws.Unprotect Password:="your_password"، ثم ينفذ أمر إظهار الأعمدة، ويعيد تفعيل الحماية المشددة فوراً باستخدام ws.Protect Password:="your_password"، مما يحافظ على التوازن بين أتمتة العمليات وحماية البيانات من التعديلات العشوائية.

7.2 إدارة الأخطاء غير المتوقعة عبر On Error GoTo

تتسم البرمجيات المؤسسية بالقدرة على الصمود في وجه الظروف التشغيلية الطارئة، مثل تعرض الملفات للتلف الجزئي أو وجود كائنات رسومية تمنع تعديل أبعاد الخلايا. ويقتضي بناء ماكرو موثوق الاعتماد على الهيكل الرسمي لاقتناص ومعالجة الاستثناءات البرمجية عبر صياغة تعليمة On Error GoTo التي تعيد توجيه مسار التنفيذ عند تعثر أي أمر برمجي.

يساعد بناء كتلة لمعالجة الأخطاء (Error Handling Block) في التقاط كود الفشل والسبب الفني لحدوثه، والأهم من ذلك، تشغيل كتلة تنظيف الخروج (Clean Exit Routine). تضمن هذه الكتلة إعادة تفعيل تحديث الشاشة، ونمط الحساب، والأحداث، حتى في حال تعطل الكود قبل وصوله للسطر الأخير، مما يحمي البرنامج من البقاء في حالة التجميد الصامت، ويقدم للمستخدم رسالة توضيحية شفافة تبين طبيعة الخطأ بدقة تامة.

7.3 التعامل مع الأعمدة المصنفة كأعمدة ذات عرض صفري

يخلط كثير من مستخدمي إكسيل بين الإخفاء الصريح للعمود باستخدام الخاصية Hidden، وبين تضييق عرض العمود بصرياً ليصبح عرضه مساوياً للصفر (ColumnWidth = 0). على الرغم من أن إكسيل يعين تلقائياً القيمة Hidden = True في نموذج الكائنات عندما يُسند للعمود عرض مقداره صفر، فإن إعادة الإظهار قد تواجه أحياناً تعقيدات ناتجة عن الاحتفاظ بتنسيقات الخلايا المدمجة (Merged Cells) التي تتقاطع مع حدود النطاق.

لضمان استعادة المقروئية الكاملة للمصنف بعد تنفيذ أمر فك الحجب، يُنصح بتطبيق أسلوب الاحتواء التلقائي AutoFit على كائن الأعمدة المعنية عبر التعليمة Columns.AutoFit. يعمل هذا الأسلوب على مسح محتويات الخلايا المستعادة وتعديل اتساع الأعمدة ليتناسب بدقة مع أطول سلسلة نصوص أو أرقام موجودة، مما يمنع ظهور الأخطاء البصرية الشائعة كرموز الحاشية المتكررة (###) التي تدل على ضيق المسافة المكانية المخصصة للأرقام.

8. المقارنة المعيارية: VBA مقابل الأدوات والمسارات البديلة

8.1 مقارنة الماكرو باختصارات لوحة المفاتيح والواجهة الرسومية

توفر الواجهة الرسومية لمايكروسوفت إكسيل اختصارات لوحة المفاتيح المباشرة، وأشهرها الاختصار القياسي لإظهار الأعمدة Ctrl + Shift + 0 (أو القوس المغلق بحسب اللغة وإعدادات لوحة المفاتيح). ورغم سرعة هذا الاختصار ظاهرياً للمستخدم المكتبي البسيط، فإنه يعاني من عيوب تطبيقية جوهرية؛ أبرزها تداخله الشائع مع إعدادات تغيير لغات الإدخال في العديد من إصدارات نظام التشغيل ويندوز، مما يعطل استجابته بالكامل لدى نسبة كبيرة من المستخدمين دون إدراك السبب.

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

8.2 مقارنة VBA بلغات الأتمتة الحديثة مثل Office Scripts

مع تحول بيئات العمل نحو الحوسبة السحابية والتكامل مع منصات العمل التعاوني عبر متصفحات الويب (Excel for the Web)، قدمت شركة مايكروسوفت لغة البرمجة الحديثة نصوص أوفيس (Office Scripts) المعتمدة على معايير لغة تايب سكريبت (TypeScript). وتتميز هذه التقنية الحديثة بقدرتها الفائقة على العمل بأمان عبر السحابة والتكامل السلس مع منصات تدفق العمل المؤتمتة مثل Power Automate دون الحاجة لتثبيت برمجيات سطح المكتب.

على الرغم من الآفاق المستقبلية الواعدة لـ Office Scripts، تظل لغة VBA صاحبة اليد العليا في بيئات العمل التحليلية المعقدة المعتمدة على تطبيقات سطح المكتب (Desktop Client). تتمتع VBA بمرونة استثنائية، وعمق وصول غير مقيد لكافة مفاصل نظام التشغيل، ومكتبات برمجية ناضجة تم بناؤها وتطويرها على مدار عقود، في حين لا تزال Office Scripts مقيدة بحدود واجهة برمجة تطبيقات الويب الجزئية وتخضع لقيود اشتراكات الخدمات المؤسسية، مما يكرس VBA كخيار أول مستقر للعمليات المكتبية الحرجة.

8.3 المفاضلة التشغيلية عبر مصفوفة اتخاذ القرار التقني

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

المعيار التقني الواجهة الرسومية والاختصارات اليدوية أكواد ماكرو VBA Office Scripts السحابية
السرعة التشغيلية بطيئة، وتعتمد كلياً على المهارة الفردية والتدخل البشري. فائقة جداً ولحظية على مستوى محرك المعالجة المكتبي. سريعة، ولكنها تتأثر أحياناً بزمن استجابة الشبكة السحابية.
معالجة الأوراق المتعددة غير ممكنة دفعة واحدة، وتتطلب التنقل المتكرر بين الأوراق. كاملة وسلسة عبر حلقة تكرارية برمجية واحدة. ممكنة من خلال كتابة حلقات برمجية بلغة TypeScript.
منصة العمل المدعومة كافة منصات سطح المكتب والويب وتطبيقات الهواتف. تطبيقات سطح المكتب لنظامي Windows وMac فقط. تطبيق الويب وسطح المكتب المرتبط باشتراكات المؤسسات.
مستوى المهارة المطلوب مستوى مبدئي لا يتطلب أي خبرات برمجية مسبقة. مستوى متوسط في فهم بنية البرمجة ونموذج الكائنات. مستوى متقدم يتطلب الإلمام بلغة JavaScript/TypeScript.
الموثوقية والحد من الأخطاء منخفضة بسبب احتمالات السهو البشري في رصد الأعمدة. شبه مطلقة وتعمل وفق شروط منطقية صارمة. عالية جداً وتخضع للتحقق الأمني البرمجي السحابي.

تثبت هذه المقارنة أن الاستثمار في إعداد ماكرو VBA مخصص يمثل القرار الأكثر جدوى للمصنفات التحليلية الكبرى؛ إذ يوفر التكلفة الزمنية التراكمية، ويمنح المؤسسة نظاماً مستقراً لتوحيد مظهر التقارير وإدارتها دون الاعتماد على ممارسات المستخدمين المتباينة.

9. طرق التكامل: ربط الماكرو بالواجهات التفاعلية والأحداث التلقائية

9.1 إنشاء وتخصيص أزرار التحكم داخل ورقة العمل (Form Controls)

لضمان تيسير استخدام الحل البرمجي لجميع أعضاء الفريق، بما فيهم الموظفون الذين لا يمتلكون أي دراية بأكواد الفيجوال بيسك، يُنصح بتضمين عناصر تفاعلية رسومية مباشرة داخل مساحة العمل. وتُعد أزرار عناصر التحكم في النماذج (Form Controls) الخيار الأمثل لتحقيق هذا الدمج الوظيفي بين الكود والواجهة.

يتم إدراج الزر بالتوجه إلى علامة تبويب “المطور”، ثم النقر على أيقونة “إدراج” (Insert)، واختيار “زر” (Button – Form Control) من القائمة المنسدلة، ومن ثم رسمه بالفأرة في موضع بارز أعلى ورقة العمل. تفتح النافذة التلقائية لتخصيص الإجراء، حيث يتم تحديد ماكرو UnhideAllColumnsActiveSheet والضغط على موافق. يمكن بعد ذلك إعادة تسمية النص الظاهر على الزر إلى “إظهار كافة الأعمدة” مع تعديل خصائص الحجم والثبات، مما يحول السطر البرمجي إلى وظيفة برمجية مرئية بضغطة زر واحدة.

9.2 تضمين الأمر في شريط أدوات الوصول السريع (QAT)

إذا كانت طبيعة عمل المحلل تقتضي مراجعة وتدقيق مصنفات خارجية متعددة يومياً لا تحتوي على أكواد ماكرو مسبقة، فإن وضع الماكرو في مصنف العمل الشخصي (Personal Macro Workbook) وربطه بشريط أدوات الوصول السريع (Quick Access Toolbar – QAT) يمثل أفضل مسار تشغيلي عام.

تتم هذه العملية بالدخول إلى خيارات إكسيل، ثم التوجه إلى قسم “شريط أدوات الوصول السريع”، واختيار “وحدات الماكرو” من قائمة الأوامر المتاحة. يتم تعيين الماكرو المطلوب وإضافته إلى الشريط العلوي مع إمكانية تعديل الأيقونة الافتراضية واختيار رمز معبر (مثل أيقونة العين المفتوحة أو السهم المزدوج الأفقي). يمنح هذا التكامل للمستخدم صلاحية تنفيذ أمر إظهار الأعمدة بنقرة واحدة في أي مصنف يُفتح على الحاسوب، مما ينقل الأداة من نطاق المصنف الفردي إلى نطاق بيئة العمل الشاملة.

9.3 تشغيل الماكرو تلقائياً عبر أحداث المصنف (Workbook Events)

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

لتحقيق ذلك، يفتح المطور نافذة كائن المصنف الحالي ThisWorkbook داخل محرر الأكواد، ويبرمج حدث ما قبل الحفظ (Workbook_BeforeSave) أو حدث فتح الملف (Workbook_Open). وفيما يلي نموذج لربط الماكرو بحدث ما قبل الحفظ:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ' فرض إظهار كافة الأعمدة عبر كافة الأوراق تلقائياً قبل إتمام عملية الحفظ
    Call UnhideAllColumnsAllSheets
End Sub

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

10. أفضل الممارسات المنهجية لتوثيق وصيانة مصنفات VBA

10.1 التوثيق البرمجي الداخلي والمعايير القياسية للترميز

تمثل قابلية قراءة الأكواد وصيانتها لاحقاً معيار الجودة الأساسي في تطوير برمجيات المؤسسات. يجب ألا تقتصر كتابة كود VBA على فاعليته اللحظية، بل يتعين إدراج التعليقات التوضيحية المستمرة (Comments) باستخدام علامة الفاصلة العليا (')، والتي تشرح الأسباب المنطقية لاختيار الأساليب المتبعة وطريقة سير العمليات التكرارية، مما يسهل على المطورين اللاحقين استيعاب البنية دون عناء.

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

10.2 إجراءات الأمان وحفظ المصنف بصيغة XLSM المعتمدة

يتطلب دمج أكواد VBA داخل مصنف إكسيل تغيير الصيغة التخزينية المعتادة للملف؛ فالصيغة القياسية .xlsx مبرمجة تقنياً لتجريد وحذف أي تعليمات برمجية كإجراء أمني عند الحفظ. وعليه، يجب اختيار حفظ المصنف بصيغة “مصنف إكسيل يدعم الماكرو” والمميزة بالامتداد .xlsm (أو الصيغة الثنائية .xlsb المخصصة للأحجام الضخمة والأداء السريع).

على الصعيد الأمني، تضع نظم التشغيل الحديثة تدابير حماية صارمة لمنع تشغيل الأكواد الضارة عبر إعدادات “مركز التوثيق” (Trust Center). يلتزم المطور المؤسسي بوضع المصنفات ضمن “المواقع الموثوقة” (Trusted Locations)، أو توقيع مشاريع الماكرو بشهادات رقمية صالحة (Digital Signatures)، مما يضمن تشغيل الأتمتة البرمجية بأمان وموثوقية ودون مواجهة حظر التشفير الأمني أثناء بيئات الإنتاج الفعلية.

10.3 مراجعة سلامة البيانات والتحقق النهائي بعد تنفيذ الإظهار

لا تنتهي دورة العمل بمجرد إطلاق الماكرو وانفراج الأعمدة على الشاشة؛ بل تقتضي الحوكمة التدقيقية إجراء فحص متقدم لسلامة بنية البيانات المعروضة. يجب على المحلل التأكد من عدم حدوث تشوهات بصرية في تنسيقات الخلايا الممتدة، أو تداخل غير مقصود في النطاقات التي تتضمن صيغاً شرطية أو تحققات لصحة البيانات (Data Validation).

يشمل التحقق النهائي مراجعة كافة المخططات البيانية (Charts) والجداول المحورية (Pivot Tables) المرتبطة بالنطاقات المتأثرة؛ لضمان أن إعادة قراءة الأعمدة لم تسحب سلاسل رقمية وسيطة تشوه الحسابات الكلية، وللتأكد من استعادة كامل المعطيات التحليلية بدقة تدعم اتخاذ القرارات الإدارية السليمة القائمة على الحقائق الرقمية الشاملة.

الخاتمة

استعرضت هذه الدراسة التأصيلية المتكاملة المنهجية البرمجية المتطورة لإدارة وإظهار كافة الأعمدة المخفية في مايكروسوفت إكسيل باستخدام لغة Visual Basic for Applications (VBA). ومن خلال تفكيك بنية نموذج كائنات إكسيل والتحليل الدقيق لخاصية EntireColumn.Hidden وقيمها البولينية، اتضح أن الاعتماد على المعالجة البرمجية الشاملة يمثل الحل الجوهري الأكثر كفاءة وأماناً بالمقارنة مع الأدوات اليدوية والواجهات الرسومية المعرضة للخطأ البشري، لا سيما في مجموعات البيانات الكبيرة وبيئات الأعمال المعقدة.

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

المراجع

  • Microsoft Corporation. (2023). Excel VBA reference: Range.EntireColumn property. Microsoft Learn. https://learn.microsoft.com/en-us/office/vba/api/excel.range.entirecolumn
  • Microsoft Corporation. (2023). Excel VBA reference: Range.Hidden property. Microsoft Learn. https://learn.microsoft.com/en-us/office/vba/api/excel.range.hidden
  • Walkenbach, J. (2015). Excel 2016 power programming with VBA. John Wiley & Sons.
  • Alexander, M., & Kusleika, R. (2019). Access 2019 Bible / Excel 2019 Power Programming with VBA. John Wiley & Sons.
★

تقييم هذا المحتوى

5.0 / 5 • 7 تقييمات

اقتباس هذا المقال

looti, M. (2026, أكتوبر 22). كيفية إظهار كافة الأعمدة باستخدام VBA (مع مثال). عرب سايكلوجي. https://arabpsychology.com/statistics/how-to-unhide-all-columns-using-vba-example/
looti, Mohammed. “كيفية إظهار كافة الأعمدة باستخدام VBA (مع مثال).” عرب سايكلوجي, 22 أكتوبر 2026, https://arabpsychology.com/statistics/how-to-unhide-all-columns-using-vba-example/.
looti, Mohammed. “كيفية إظهار كافة الأعمدة باستخدام VBA (مع مثال).” عرب سايكلوجي. أكتوبر 22, 2026. https://arabpsychology.com/statistics/how-to-unhide-all-columns-using-vba-example/.