تُمثّل معالجة النصوص وتدقيق البيانات اللغوية والرقمية ركيزةً جوهرية في بناء الأنظمة البرمجية المؤتمتة، لا سيما في البيئات التطويرية المدمجة التي تتعامل مباشرة مع جداول البيانات الضخمة وقواعد المعطيات المعقدة. في هذا السياق، تبرز لغة البرمجة Visual Basic for Applications (المعروفة اختصاراً بـ VBA) كإحدى أكثر الأدوات البرمجية انتشاراً وفاعلية في أتمتة العمليات المكتبية وتحليل البيانات داخل حزمة مايكروسوفت أوفيس، وخاصة برنامج مايكروسوفت إكسيل (Microsoft Excel). إن التعامل مع السلاسل النصية المتنوعة، وتصنيف السجلات، والبحث عن المدخلات التي تتشابه في البنية وتختلف في الحروف المحددة، يفرض على المبرمجين تجاوز آليات المقارنة الحرفية الصلبة والتوجه نحو تقنيات أكثر مرونة تعتمد على مطابقة الأنماط (Pattern Matching).
تأتي أحرف البدل (Wildcards) لتؤدي هذا الدور التحويلي، حيث تعمل كرموز نائبة ذات دلالات قواعدية مرنة تسمح بتمثيل حرف واحد، أو مجموعة محارف، أو سلسلة ممتدة غير محدودة من الرموز. ولا تقتصر أهمية هذه الأدوات على تسريع عمليات الاستعلام والترشيح فحسب، بل تمتد لتشمل حوكمة جودة البيانات وتطهير السجلات المشوهة والتأكد من انضباط المدخلات وفق معايير تنسيقية صارمة دون الحاجة إلى كتابة خوارزميات معقدة من الصفر. يتيح المعامل البرمجي Like في بيئة VBA للمطور استدعاء هذه الرموز المدمجة وتنفيذ عمليات فحص منطقية فورية تتميز بالكفاءة الحسابية وسهولة القراءة البرمجية.
يهدف هذا المقال الأكاديمي الشامل إلى تقديم دراسة معمقة وتطبيقية لكيفية استخدام أحرف البدل في بيئة VBA، بدءاً من الأسس النظرية والمفاهيمية لمطابقة الأنماط، مروراً بالتحليل الدقيق للبنية التركيبية لكل رمز من الرموز المعتمدة، وصولاً إلى استعراض النماذج التطبيقية المتقدمة واستراتيجيات تحسين الأداء وإدارة الأخطاء. سيتم تفكيك السلوكيات الحسابية للأحرف النجمية، وعلامات الاستفهام، ورموز الشباك، والأقواس المعقوفة المحددة للنطاقات والمجموعات والنفي، مع تقديم رؤى متقدمة تُمكّن مهندسي ومطوري الحلول المؤتمتة من كتابة شيفرات تتسم بالدقة العالية، وقابلية التوسع، والموثوقية التشغيلية.
1. المدخل النظري لأحرف البدل ومفهوم مطابقة الأنماط في VBA
1.1 تعريف أحرف البدل ودورها في المعالجة الآلية للنصوص
تُعرّف أحرف البدل (Wildcards) في علوم الحاسوب وهندسة البرمجيات بأنها محارف اصطلاحية خاصة تُسند إليها وظائف دلالية محددة تعمل كبدائل نائبة عن محرف مفرد أو متتالية من المحارف داخل سلاسل النصوص. في الأنظمة المعجمية وآليات التحليل النحوي، يُشير مفهوم “البدل” إلى إمكانية الاستعاضة عن القيمة الحرفية المطلقة برمز مجرد يحمل طابع التعميم الموجه، مما يسمح للخوارزميات بالتعرف على الأنماط التركيبية للكلمات والعبارات دون الارتهان للتطابق التام حرفاً بحرف. تنبع الأهمية التاريخية لهذه الرموز من بدايات تطوير أنظمة التشغيل القائمة على موجه الأوامر، حيث كانت الحاجة ملحة للتعامل مع مجموعات من الملفات دفعة واحدة بالاعتماد على أسماء متقاربة البنية.
في بيئات قواعد البيانات وجداول البيانات الحديثة، يُعد البحث القائم على الأنماط ركيزة حاسمة في هندسة استرجاع المعلومات وتنقية البيانات غير المهيكلة. إن البحث النصي الحرفي (Literal Matching) يتطلب تطابقاً مطلقاً بين السلسلة المستهدفة وسلسلة الاستعلام، وهو ما يُعد عائقاً كبيراً أمام تحليل البيانات الواقعية التي تشوبها الأخطاء الإملائية، أو الاختلافات في نهايات الكلمات، أو التباين في البادئات واللواحق. على النقيض من ذلك، يمنح البحث القائم على الأنماط المرنة (Flexible Pattern Matching) المحلل البرمجي القدرة على صياغة “قوالب دلالية” تستوعب التباينات المحتملة وتستخلص المعطيات المتوافقة مع منطق القالب، مما يرفع من حساسية النظام الاسترجاعي دون التضحية بالدقة الحسابية اللازمة لضمان سلامة النتائج المستخرجة.
1.2 تكامل أحرف البدل داخل بيئة Visual Basic for Applications
تعود جذور معالجة النصوص داخل لغة Visual Basic for Applications إلى أوائل التسعينيات عندما أطلقت شركة مايكروسوفت هذه البيئة كترقية جوهرية للغات الماكرو القديمة مثل XLM في إصدار Excel 5.0 عام 1993. استمدت VBA بنيتها من لغة Visual Basic الكلاسيكية، وجرى تزويدها بمحركات تحليل نصي مدمجة تلبي احتياجات المستخدمين والمهندسين في فحص وتعديل السجلات مباشرة داخل الذاكرة العشوائية للتطبيقات المكتبية. يُعتبر هذا التكامل المباشر مع مكونات Office Object Model عاملاً أساسياً في انتشار استخدام أحرف البدل؛ إذ أتاحت البيئة تطبيق هذه الأنماط ليس فقط على مستوى خلايا إكسيل، بل عبر مختلف الكائنات البرمجية من مستندات نصية وقواعد بيانات Access وعناصر Outlook البرمجية.
تتكامل أنظمة التشغيل الآلي ومعالجة البيانات الحاسوبية ضمن تفاعل إنساني-حاسوبي وثيق؛ فكما حلل هانز برويت في أبحاثه الرائدة حول التفاعل الاجتماعي والتشغيلي مع الحواسيب، فإن تفويض الآلة لتنفيذ المهام المعقدة يستلزم بنية تفاهم دقيقة وقواعد تحكم واضحة تضمن اتساق الاستجابات الميكانيكية مع المقاصد البشرية (Pruijt, 2006). كما أشار طارق سيغال في دراسته حول الآلات المستجيبة والأنظمة البرمجية الحوارية إلى أن الترجمة الدقيقة للأنماط النصية تُمثّل جسراً جوهرياً بين المدخلات البشرية والتحليل الحسابي المؤتمت (Segal, 2025). عند مقارنة أحرف البدل في VBA بالتعابير النمطية الأكثر تعقيداً والمعروفة باسم Regular Expressions (RegExp)، يظهر تباين وظيفي واضح؛ حيث توفر أحرف البدل حلاً مدمجاً خفيف الوزن، سريع التنفيذ، ومباشر الصياغة دون الحاجة إلى استدعاء مكتبات خارجية مثل VBScript.RegExp، مما يجعلها الخيار المثالي لأغلب مهام التدقيق اليومية وتصفية البيانات المجدولة.

2. المعامل البرمجي Like ودوره المحوري في فحص السلاسل النصية
2.1 البنية التركيبية للمعامل Like وقواعد الصياغة
يمثل المعامل البرمجي Like الأداة التنفيذية المركزية التي تتيح للغة VBA استيعاب أحرف البدل وإجراء عمليات مطابقة الأنماط. على عكس معاملات المقارنة التقليدية (مثل = و <>) التي تكتفي بالتحقق من التساوي الحرفي، يعمل Like كمعامل ثنائي (Binary Operator) يأخذ تعبيرين نصيين: التعبير الأول يمثل السلسلة النصية المراد اختبارها، بينما يمثل التعبير الثاني النمط المراد مطابقة السلسلة معه. تخضع الصياغة العامة للمعامل للقالب القياسي التالي:
النتيجة = النص_المراد_فحصه Like النمط_المحدد
تكون القيمة المرجعة من هذا التعبير دائماً ذات طبيعة منطقية (Boolean)، حيث تعيد الدالة القيمة المنطقية True إذا كانت السلسلة النصية تخضع بالكامل للضوابط الهيكلية المحددة داخل النمط، في حين تعيد القيمة المنطقية False إذا حدث أي إخلال في التطابق، حتى وإن كان في محرف واحد. علاوة على ذلك، في حال احتواء أي من الطرفين على قيمة خالية برمجياً (Null)، فإن ناتج العملية يؤول تلقائياً إلى Null، وهو ما يستدعي الحذر عند التعامل مع الحقول الاختيارية في قواعد البيانات لتجنب أخطاء تفاوت الأنواع (Type Mismatch).
تتطلب كتابة شيفرات دقيقة باستخدام المعامل Like انضباطاً صارماً في تحديد أنواع المتغيرات (Variable Typing) قبل إجراء المقارنة. يُنصح المطورون بالإعلان الصريح عن المتغيرات كنصوص (String) باستخدام عبارات Dim الصريحة، وتجنب استخدام المتغيرات العامة غير المحددة (Variant) قدر الإمكان، نظراً لأن المتغيرات من نوع Variant تُحمّل المعالج عبء التحقق الزمني من النوع (Run-time Type Checking)، مما قد يؤدي إلى انخفاض ملحوظ في الأداء عند معالجة مصفوفات ضخمة، فضلاً عن احتمالية حدوث سلوكيات غير متوقعة إذا تحولت الأرقام تلقائياً إلى قيم عددية بحتة قبل تمريرها لمعامل المقارنة.
2.2 تأثير إعدادات مقارنة النصوص Option Compare على النتائج
يخضع سلوك مطابقة الأنماط في VBA بشكل مباشر للتوجيه المصدري المعلن في ترويسة الوحدة النمطية (Module Header) عبر العبارة التنظيمية Option Compare. يُحدد هذا الإعداد الاستراتيجي المعيار الحسابي الذي سيعتمده المترجم في تقييم تطابق المحارف، وينقسم إلى خيارين رئيسيين يحملان تأثيراً جذرياً على مخرجات المعامل Like:
- Option Compare Binary: وهو الخيار الافتراضي في بيئة التطوير في حال عدم كتابة أي تصريح بديل. بموجب هذا الإعداد، تتم المقارنة بالاعتماد الصارم على الترتيب الثنائي للمحارف وفق تمثيلها الداخلي في جداول الشفرات (مثل جدول ASCII أو ANSI). يترتب على ذلك حساسية مطلقة لحالة الأحرف اللاتينية؛ فالرمز “A” (ذو القيمة العشرية 65) يختلف جوهرياً عن الرمز “a” (ذو القيمة العشرية 97). وبناءً عليه، فإن النمط “cat” لن يطابق النص “Cat” إطلاقاً ويعيد False.
- Option Compare Text: يُلغي هذا الإعداد حساسية حالة الأحرف، حيث تجري المقارنة وفق الترتيب اللغوي المعتمد في نظام التشغيل (System Locale Sort Order). تحت هذا النمط، تُعامل الأحرف الكبيرة والصغيرة ككيانات متطابقة (“A” = “a”)، وتتطابق الأنماط اللغوية بغض النظر عن حالة الإدخال. كما يمتد هذا التأثير إلى معالجة بعض علامات التشكيل واللهجات النصية في اللغات الأجنبية.
تكمن الأهمية المعمارية لتحديد Option Compare في أن نطاق تأثيره يمتد ليشمل كافة الإجراءات والدوال المكتوبة داخل الوحدة النمطية المعنية، دون التأثير على الوحدات الأخرى في نفس المشروع البرمجي. من منظور الممارسات الهندسية الفضلى، يجب على المطور تحديد الخيار الملائم لطبيعة التطبيق في بداية كتابة الملف المصدري؛ فإذا كان التطبيق يعالج معرفات برمجية وأكواداً سرية تتطلب دقة متناهية، يُفضّل الاعتماد على Binary، بينما يُعد التوجيه Text مثالياً لمحركات البحث الداخلي وتصنيف أسماء العملاء وفرز النصوص اللغوية العامة.
3. استخدام النجمة (*) لمطابقة عدد غير محدد من الأحرف
3.1 الخصائص الدلالية لرمز النجمة في صياغة الأنماط
يُعد رمز النجمة (*) أكثر أحرف البدل استخداماً ومرونة في بيئة VBA، حيث يُشير في لغة الأنماط إلى تمثيل “صفر أو أكثر من المحارف” أياً كانت طبيعتها، سواء كانت أحرفاً هجائية، أو أرقاماً، أو مسافات فارغة، أو علامات ترقيم. تعني هذه السعة الشاملة أن النمط المزود بالنجمة يتمتع بمرونة تمتد من السلسلة الخالية تماماً (Zero Characters) إلى متتالية لا نهائية من المحارف ضمن الحدود الفيزيائية القصوى لسلسلة النصوص المسموح بها في الذاكرة.
تتجلى هذه المرونة بوضوح عند البحث عن الجذور اللغوية ومقاطع الكلمات المتشابهة، وتعتمد نتيجة الفحص المنطقي بشكل جذري على موضع النجمة داخل سلسلة النمط:
- النجمة في نهاية النمط (مثل “Prefix*”): تُطابق أي نص يبدأ بالمقطع “Prefix” بصرف النظر عما يتبعه. تطابق هذه الصيغة كلمة “Prefix”، و”Prefixes”، و”Prefixation”، مما يجعلها الأداة المثالية لفرز البيانات بناءً على البادئات المعيارية.
- النجمة في بداية النمط (مثل “*Suffix”): تُطابق أي سلسلة تنتهي بالمقطع “Suffix”، مما يُفيد في فرز امتدادات الملفات أو الكلمات التي تشترك في لواحق لغوية محددة.
- النجمة في طرفي النمط (مثل “*Keyword*”): تُطابق أي سلسلة نصية تتضمن الكلمة المفتاحية في أي موضع من مواضعها، سواء كانت في البداية، أو المنتصف، أو حتى إذا كانت الكلمة المفتاحية هي المحتوى الوحيد للسلسلة.

3.2 تطبيقات عملية: البحث عن المقاطع النصية وتصفية البيانات
لتوضيح الآليات التطبيقية لاستخدام النجمة، نفترض وجود جدول بيانات يحتوي على تفاصيل سجلات المبيعات وسلاسل التوريد، ونرغب في بناء إجراء ماكرو يقوم بمسح هذه السجلات والتحقق من احتواء النص على مقاطع معينة لتصنيفها. يُمكن كتابة بنية برمجية تفحص وجود الكلمة الفرعية “hot” باستخدام النمط “*hot*”، بحيث تلتقط الكلمات مثل “shot”، و”hotel”، و”photograph”، إضافة إلى السلسلة المقتضبة “hot” بذاتها.
في سيناريو برمجي آخر، قد تتطلب إدارة النظام فحص قائمة من السجلات للتأكد من انتهاء قيم الخلايا بنمط محدد مثل “*ets”. يتيح هذا النمط التقاط مصطلحات مثل “targets”، و”markets”، و”sheets”. تتكامل هذه الصيغ النمطية بفاعلية فائقة داخل البنى التكرارية الحلقية (مثل For Each…Next أو For i = 1 To LastRow) للمرور على عمود كامل في ورقة العمل. يقوم الكود بفحص قيمة كل خلية، ومقارنتها باستخدام Like مع النمط المختار، ومن ثم اتخاذ إجراءات لاحقة كإبراز الخلية بلون محدد، أو نسخها إلى ورقة ملخصة، أو كتابة تصنيف تلقائي في العمود المجاور، مما يوفر قدراً هائلاً من الوقت والجهد التشغيلي.
4. استخدام علامة الاستفهام (؟) لتمثيل حرف فردي واحد بدقة
4.1 القيود التركيبية واستخدامات علامة الاستفهام
تمثل علامة الاستفهام (?)، المعيارية في لغة VBA، أداة الاستعاضة عن محرف فردي وحيد لا أكثر ولا أقل. على العكس تماماً من رمز النجمة الذي يسمح باحتواء السلاسل الفارغة أو الامتدادات الطويلة، فإن علامة الاستفهام تفرض شرطاً هيكلياً صارماً لا يقبل التجاوز: يجب أن يقابل كل علامة استفهام محرف حقيقي واحد في نفس الموضع المكاني من السلسلة المختبرة. في حال كانت السلسلة فارغة في ذلك الموضع، أو احتوت على أكثر من محرف، يفشل الشرط المنطقي فوراً ويعيد المعامل Like القيمة False.
تتضح هذه الدقة التركيبية في قدرة علامة الاستفهام على التحكم الدقيق في الطول الإجمالي لسلسلة النصوص. على سبيل المثال، إذا تضمن النمط ثلاثة أحرف وكان الحرف الأوسط علامة استفهام، مثل “B?t”، فإن الكود سيطابق حصراً السلاسل المكونة من ثلاثة محارف فقط تبدأ بالحرف B وتنتهي بالحرف t (مثل “Bat”، و”Bit”، و”Bet”، و”B1t”، و”B t”)، في حين ستفشل الكلمات التي تختلف في الطول مثل “Bt” أو “Boot”. يمنح هذا السلوك علامة الاستفهام مكانة فريدة في تدقيق التنسيقات المقيدة ومطابقة المعطيات المعيارية.

4.2 أمثلة برمجية تطبيقية لمطابقة أطوال النصوص المحددة
تجد علامة الاستفهام تطبيقاتها العملية الواسعة في مجالات التحقق من صحة المدخلات وضبط المعايير التنسيقية للمستندات المؤسسية. من الأمثلة الشائعة في هذا السياق، التحقق من بنية الكلمات ثلاثية الحروف؛ فعند صياغة النمط “?at”، فإن الإجراء سيتعرف تلقائياً على مفردات مثل “Cat” و”Hat” و”Mat”، مع استبعاد السلسلة “That” لتجاوزها الطول المحدد، واستبعاد “at” لعدم احتوائها على المحرف الأولي المشروط.
كما تبرز كفاءة هذا الرمز عند دمجه بتكرارات متعددة للتحقق من الأكواد والرموز ذات التنسيق الثابت. إذا افترضنا أن نظام الشحن يعتمد رموزاً بريدية أو أكواد مستودعات تتكون من مقطع هجائي وحرفين مجهولين ثم لاحقة ثابتة، فيمكن صياغة النمط البرمجي على النحو “PR??-US”. في هذه الحالة، يتطابق النمط مع “PR01-US” و”PRAX-US”، ويرفض قطعاً “PR1-US” أو “PR999-US”. عند تطبيق هذا النمط داخل حلقة تكرارية تفحص عموداً يحوي بيانات مدخلة يدوياً، يمكن للماكرو فرز القيود وتحديد المدخلات الشاذة أو غير المكتملة بدقة رقمية متناهية.
5. استخدام رمز الشباك (#) لمطابقة خانة رقمية واحدة
5.1 آلية التحقق من الأرقام المنفردة عبر الرمز #
يختص رمز الشباك (#) في محرك مطابقة الأنماط التابع لـ VBA بوظيفة نوعية بالغة الأهمية: مطابقة خانة رقمية واحدة وحيدة تقع قيمتها الحسابية بين المجال [0-9]. يعمل هذا المحرف كمرشح عددي صارم؛ إذ يرفض رفضاً قاطعاً أي محارف هجائية، سواء كانت بأحرف كبيرة أو صغيرة، كما يرفض المسافات البيضاء الفارغة، وعلامات الترقيم، والرموز الحسابية، وأي محارف تحكم خاصة. يجب أن يقابل موضع رمز الشباك رقماً صحيحاً من خانة واحدة في الموضع المناظر له في السلسلة النصية الخاضعة للفحص.
يكتسب هذا الرمز أهمية محورية بوصفه أداة التحقق والتدقيق الأولي (Sanitization and Validation) قبل تمرير المدخلات النصية إلى المحركات الحسابية أو دوال التحويل الرقمي مثل CInt أو CLng أو CDbl. من المعروف برمجياً أن محاولة تحويل سلسلة تحتوي على أحرف غير عددية إلى قيم رقمية تُسفر عن انهيار الماكرو وظهور خطأ التشغيل ذي الرقم 13 الشهير (Type Mismatch). يعمل التحقق المسبق عبر النمط المزود برمز الشباك كجدار حماية منطقي يضمن سلامة المعطيات الموجهة نحو المعالجة الرياضية المتقدمة.

5.2 نماذج برمجية للتحقق من صحة المعرفات والأكواد العددية
تتعدد التطبيقات الصناعية والمكتبية لرمز الشباك، لا سيما في إدارة السجلات المحاسبية والبيانات الديموغرافية للعملاء. من أبرز هذه التطبيقات بناء أنماط فحص الهواتف الثابتة أو أرقام الحسابات البنكية أو أرقام الهويات الوطنية المقيدة بتنسيق بنيوي صارم. على سبيل المثال، إذا كان التنسيق القياسي لرمز الهوية الداخلية في مؤسسة ما يتبع الهيكل: خانتان رقميتان، يليهما شرطة فاصلة، ثم أربع خانات رقمية، فإن النمط يُمثل برمجياً بالصيغة: “##-####”.
لتفعيل هذا النمط، يمكن بناء دالة مخصصة معرّفة من قبل المستخدم (User Defined Function – UDF) تُدعى IsValidCode، تأخذ قيمة نصية كمدخل وتعيد True في حال تطابقها مع النمط “##-####” وFalse في حال مخالفتها. تتيح هذه الدالة معالجة الأرقام المخزنة كنصوص بسلاسة؛ ففي تطبيقات إكسيل كثيراً ما تُدرج الأرقام مسبوقة بفاصلة عليا (Apostrophe) لمنع حذف الأصفار على اليسار، وهنا يأتي دور المعامل Like مع رمز الشباك للتعامل مع السلسلة ككتلة نصية عددية نقية، مما يمنع الأخطاء التركيبية الناتجة عن محاولات المقارنة العددية المباشرة مع الحقول المنسقة كنصوص.
6. استخدام الأقواس المعقوفة ([ ]) لمطابقة مجموعات ونطاقات الأحرف
6.1 صياغة المجموعات المحددة والقوائم داخل الأقواس
تُمثل الأقواس المعقوفة ([ ]) أداة الحوكمة الأكثر تفصيلاً في ترسانة أحرف البدل؛ حيث تتيح للمبرمج إنشاء “مجموعة محارف مخصصة” (Character List) ليتم مطابقتها مع محرف واحد فقط في السلسلة النصية المقابلة. بموجب هذه الآلية، يقوم المحرك بمقارنة المحرف المستهدف في السلسلة بكافة المحارف المدرجة بصورة صريحة داخل القوسين، وتتحقق المطابقة بنجاح (True) إذا تطابق ذلك المحرف الفردي مع أي عنصر من عناصر المجموعة، بينما تفشل إذا لم يكن ينتمي إليها.
تستخدم هذه الخاصية بكثافة للبحث عن التباينات الإملائية أو حصر الخيارات في فئات لغوية معينة، مثل البحث عن حروف العلة الإنجليزية عبر صياغة النمط “[aeiou]”. على سبيل المثال، النمط “c[aeiou]t” سيتطابق بنجاح مع الكلمات “cat”، و”cot”، و”cut”، ولكنه سيرفض تماماً “crt” أو “cbt”. من المهم إدراك أن المسافات المتروكة داخل الأقواس المعقوفة تُعامل كمحارف مستقلة؛ فإذا كُتبت مسافة بين الرموز، مثل “[a b]”، تصبح المسافة جزءاً من الخيارات المقبولة، مما يتطلب الحذر الشديد عند بناء القوائم لضمان عدم إقحام مسافات عارضة تؤثر على دقة الفرز.

6.2 تحديد النطاقات المتسلسلة باستخدام الشرطة الفاصلة (-)
لتعزيز الفاعلية البرمجية وتجنب كتابة كافة المحارف المتتالية يدوياً داخل الأقواس المعقوفة، توفر لغة VBA إمكانية تحديد النطاقات المتسلسلة باستخدام الشرطة الفاصلة (-). بمجرد وضع الشرطة بين محرفين، يُفسر المترجم هذا التعبير على أنه يشمل المحرف الأولي، والمحرف النهائي، وكافة المحارف الواقعة بينهما ترتيباً وفق جدول الترميز المعتمد في بيئة التشغيل. يتيح ذلك تلخيص القوائم الكبيرة في تعابير مقتضبة وأنيقة تعزز من مقروئية الشيفرة البرمجية.
تتضمن النطاقات القياسية الأكثر شيوعاً في التطبيقات البرمجية:
- نطاقات الحروف الأبجدية اللاتينية: الصياغة “[A-Z]” لمطابقة أي حرف كبير مفرد، والصياغة “[a-z]” لمطابقة أي حرف صغير مفرد. يُراعى هنا أنه في حال تفعيل الخيار Option Compare Text، فإن كلا النطاقين سيتصرفان بنفس الطريقة ويطابقان الحروف بنوعيها.
- النطاقات الرقمية: الصياغة “[0-9]” لمطابقة أي رقم من صفر إلى تسعة، والتي تُكافئ في سلوكها رمز الشباك (#). كما تتيح هذه الميزة حصر الأرقام في مجالات فرعية دقيقة لا يمكن تمثيلها برمز الشباك، مثل “[3-7]” لمطابقة الأرقام المحصورة بين ثلاثة وسبعة حصراً.
من الناحية المعمارية، يشترط أن تُحدد النطاقات بتسلسل تصاعدي سليم وفقاً للقيم الثنائية للمحارف (Ascending Order)؛ فالتعبير “[A-Z]” تعبير صحيح، بينما يؤدي استخدام التعبير المقلوب “[Z-A]” إلى حدوث خطأ تشغيلي أو فشل دائم في المطابقة، مما يوجب على المبرمجين الإلمام الكامل بترتيب المحارف داخل جداول الترميز تفادياً لأخطاء الصياغة المنطقية.
7. استثناء واستبعاد الأنماط باستخدام رمز النفي ([!…])
7.1 المنطق البرمجي لرمز علامة التعجب كأداة استبعاد
يُوفر محرك مطابقة الأنماط في VBA إمكانية تحويل السلوك الانتقائي للأقواس المعقوفة من الإثبات إلى النفي، وذلك من خلال إدراج رمز علامة التعجب (!) في الموضع الأول فوراً بعد القوس المفتوح بالصيغة “[!… ]”. من الناحية المنطقية، يُكافئ هذا التركيب معامل النفي المنطقي (Logical NOT) المطبق على مجموعة المحارف؛ حيث تعني هذه الصياغة: “طابق أي محرف فردي وحيد بشرط ألا يكون موجوداً إطلاقاً ضمن هذه القائمة أو النطاق المحدد”.
يشترط لعمل هذا النفي البرمجي بصورة صحيحة أن تحتل علامة التعجب الموضع المباشر الذي يلي فتح القوس مباشرة؛ فإذا وردت علامة التعجب في موضع متأخر داخل القوس (مثل “[A!Z]”)، فإنها تفقد وظيفتها كأداة نفي وتُعامل كمجرد محرف عادي يُراد البحث عنه ضمن المجموعة. كما يتميز هذا التركيب بالقدرة على استيعاب القوائم العشوائية والنطاقات المتصلة على حد سواء؛ فالصيغة “[!0-9]” تعني استبعاد الأرقام حصراً وقبول أي محرف بديل، بينما الصيغة “[!AEIOU]” تستبعد حروف العلة الكبيرة وتقبل ما سواها.

7.2 أمثلة تطبيقية لتنقية النصوص واستبعاد المدخلات غير المرغوبة
تتجلى الفائدة الهندسية لرمز الاستبعاد [!…] في سيناريوهات تطهير البيانات وفحص موثوقية السجلات المدخلة في نماذج إكسيل. من التطبيقات المتكررة في بيئات العمل، التحقق من خلو الأسماء والمعرفات الشخصية من الأرقام المشوهة. فإذا كان هناك نظام يتطلب أن تبدأ أسماء المستخدمين بحرف هجائي صريح وألا تحتوي في بدايتها على أي قيمة عددية، يمكن تطبيق الشرط المنطقي التالي لفحص الحرف الأول: If TextValue Like “[!0-9]*” Then، مما يضمن أن السلسلة تبدأ بمحرف غير عددي وتستمر بسلسلة غير مقيدة.
كما يُستخدم هذا النمط في تصفية النصوص واستبعاد علامات الترقيم أو الرموز الخاصة من الحقول المخصصة للتخزين المحاسبي النقي. يظهر الجدول التالي مقارنة تحليلية بين استخدامات أحرف البدل المختلفة في سياقات المقارنة المنطقية في VBA:
| رمز البدل | الوظيفة الدلالية البرمجية | مثال النمط | نموذج يطابق (True) | نموذج لا يطابق (False) |
|---|---|---|---|---|
| * | مطابقة صفر أو أكثر من المحارف | “A*Z” | “AZ”, “ABZ”, “A123Z” | “AZ1”, “A-Z-extra” |
| ? | مطابقة محرف مفرد واحد بدقة | “A?Z” | “ABZ”, “A1Z”, “A Z” | “AZ”, “ABBZ” |
| # | مطابقة رقم حسابي مفرد (0-9) | “A#Z” | “A0Z”, “A9Z” | “ABZ”, “A Z”, “A#Z” |
| [charlist] | مطابقة أي محرف ضمن المجموعة المحددة | “A[BC]Z” | “ABZ”, “ACZ” | “ADZ”, “A-Z” |
| [!charlist] | مطابقة أي محرف لا ينتمي للمجموعة | “A[!BC]Z” | “ADZ”, “A1Z”, “A Z” | “ABZ”, “ACZ” |
تثبت المقارنة البرمجية أن استخدام الاستبعاد المباشر بواسطة النفي القوسي يوفر كفاءة حوسبية أعلى بمراحل مقارنة بمحاولة استبعاد الرموز عبر تكرار الدوال الحلقية مثل InStr، نظراً لأن المقارنة عبر المعامل Like تُنفذ عند المستوى الثنائي الداخلي لمحرك VBA، مما يقلل من الاستهلاك الزمني للموارد.
8. دمج أحرف البدل لبناء أنماط بحث معقدة وتطبيقات عملية متقدمة
8.1 استراتيجيات تركيب الأنماط الهجينة متعددة الأبعاد
تنبع القوة الحقيقية لمحرك مطابقة الأنماط في VBA من القدرة على مزج ودمج أحرف البدل المتعددة معاً داخل سلسلة نمط موحدة. يتيح هذا التوليف الهجين بناء مرشحات استعلامية فائقة الدقة تستطيع استيعاب المتطلبات التشغيلية الأكثر تعقيداً. من خلال الجمع بين سعة النجمة الممتدة، وانضباط علامة الاستفهام الفردي، ودقة الأقواس المعقوفة النوعية، يستطيع المطور صياغة أنماط متعددة الأبعاد تكشف عن بنية النصوص وتفحص أجزاءها في آن واحد.
من الأمثلة الشهيرة على هذه الأنماط الهجينة، التحقق من امتدادات الملفات في مهام الأتمتة المكتبية. لنفترض أننا نريد استعراض قائمة ملفات في مجلد محدد وتحديد ملفات إكسيل الحديثة فقط، يمكننا استخدام النمط “*.xls?”؛ حيث تُطابق النجمة الأولى أي اسم للملف أياً كان طوله، بينما يضمن الامتداد .xls? التقاط الملفات المنتهية بـ .xlsx و.xlsm و.xlsb، مع استبعاد الملفات القديمة ذات الامتداد .xls المكون من ثلاثة أحرف فقط. وبالمثل، يمكن بناء نمط لفحص البنية الأساسية للبريد الإلكتروني بصيغة مبسطة مثل “*?@*?.?*” للتأكد من وجود محرف واحد على الأقل قبل إشارة @ وبعدها، مع وجود النقطة الفاصلة للنطاق.

8.2 تنفيذ ماكرو شامل لمعالجة وتصنيف مجموعات البيانات الضخمة
لتطبيق هذه المفاهيم في إطار واقعي متكامل، يمكن بناء إجراء فرعي (Sub Procedure) متطور في VBA يتولى مسح جدول يحتوي على عشرات الآلاف من السجلات، ويقوم بفرزها وتصنيفها في أعمدة جديدة بناءً على شروط هجينة مركبة. يتميز الإجراء بالاعتماد على البنية المتسلسلة للشروط المنطقية (Select Case True أو If…ElseIf):
يبدأ الإجراء بتعريف المتغيرات الأساسية للمجال والمصفوفات، مع استهداف النطاق النشط للبيانات في العمود الرئيسي. يُفحص كل سجل بالاعتماد على مصفوفة من أنماط Like:
- الشرط الأول: التحقق مما إذا كان السجل يُمثل شفرة مؤسسية تبدأ بحرفين كبيرين يليهما ثلاثة أرقام عبر النمط “[A-Z][A-Z]###*”؛ وفي حال تحقق الشرط، تُصنف العملية في عمود الفرز كـ “كود مؤسسي معتمد”.
- الشرط الثاني: التحقق مما إذا كان السجل عبارة عن معاملة مؤقتة تبدأ ببادئة خاصة متبوعة بأي محارف عبر النمط “TEMP-[!0-9]*”؛ ليتم وسمها كـ “سجل إداري غير مسعر”.
- الشرط الثالث: التحقق من وجود المعاملات المالية المجهولة التي تنتهي برمز الحساب المكون من أربعة أرقام مسبوقة بنجمة عبر “*-[0-9][0-9][0-9][0-9]”؛ لتُصنف تلقائياً كـ “حساب فرعي مدقق”.
يُحقق هذا الإجراء سرعة معالجة عالية وفائقة مقارنة بعمليات الفحص اليدوي أو استخدام الصيغ النصية المعقدة في واجهة إكسيل العادية، حيث أثبتت الاختبارات الحسابية قدرة هذه الإجراءات على معالجة ما يزيد عن خمسين ألف صف في أجزاء من الثانية شريطة تطبيق الممارسات الفضلى لإدارة الذاكرة.
9. التعامل مع المحارف الخاصة وحالات الهروب (Escaping Special Characters)
9.1 مشكلة البحث عن أحرف البدل كرموز نصية حرفية
يواجه المطورون في كثير من الأحيان تحدياً برمجياً يتمثل في الرغبة في البحث عن المحرف ذاته الذي يمثل رمز بدل، كأن يُطلب فحص السلسلة لمعرفة ما إذا كانت تحتوي على علامة استفهام حقيقية (?)، أو رمز النجمة (*)، أو علامة الشباك (#)، أو الأقواس المعقوفة ([ ]). نظراً لأن محرك المعامل Like يتعامل مع هذه الرموز كأدوات وظيفية ذات دلالات تعميم وليست محارف عادية، فإن إدراجها المباشر في سلسلة النمط يؤدي إلى تشغيل وظيفتها كبدل بدلاً من مطابقتها كرمز مجرد.
لحل هذه المعضلة وإبطال المفعول الوظيفي لرمز البدل وتحييده (Escaping)، يعتمد محرك VBA تقنية وضع الرمز الخاص داخل قوسين معقوفين. تعمل هذه الآلية على إبلاغ المترجم بضرورة معاملة الرمز كمحرف نصي حرفي (Literal Character). يوضح الجدول التالي قواعد التحييد القياسية للأحرف الخاصة:
| المحرف المراد البحث عنه كرمز حرفي | طريقة الصياغة الآمنة داخل النمط (Escaped Syntax) | نموذج النمط الكامل | النص المطابق |
|---|---|---|---|
| علامة الاستفهام الحرفية (?) | [?] | “*Is it true[?]” | “Is it true?” |
| رمز النجمة الحرفي (*) | [*] | “*Note [*]*” | “Important Note * See below” |
| رمز الشباك الحرفي (#) | [#] | “Item [#]###” | “Item #104” |
| القوس المعقوف المفتوح ([) | [[] | “Data [[]*[]]” | “Data [Archived]” |
تجدر الإشارة إلى أن القوس المعقوف المغلق (]) لا يتطلب تحييداً خاصاً إذا استُخدم خارج نطاق مجموعة، ولكن عند استخدامه للبحث عن زوج من الأقواس الحرفية، يُكتب القوس المفتوح بالصيغة “[[]” بينما يُكتب القوس المغلق إما منفرداً أو ضمن صيغة محايدة لضمان التناسق الهيكلي لنمط التعبير.

9.2 معالجة الحالات الاستثنائية وتفادي أخطاء التشغيل النحوية
تتسبب الأخطاء الإملائية والتركيبية في صياغة أنماط المعامل Like في إطلاق أخطاء وقت التشغيل (Run-time Errors) أو حدوث إخفاقات منطقية يصعب تتبعها. من أكثر هذه الأخطاء شيوعاً نسيان إغلاق القوس المعقوف؛ فإذا تمت كتابة النمط بصيغة مفتوحة مثل “Text[A-Z”,يتوقف المترجم فوراً ويطلق خطأ صياغة النمط الموجه (Error 93: Pattern Match Error أو Invalid pattern string)، نظراً لعجز المحلل النحوي عن إيجاد الحد النهائي للمجموعة المخصصة.
إضافة إلى ذلك، تبرز معضلة التعامل مع الخلايا الفارغة أو القيم غير المحددة في قواعد البيانات (Null / Empty). كما سلف الذكر، فإن مقارنة قيمة Null باستخدام Like تؤدي إلى توليد قيمة Null كنتيجة للمقارنة، وإذا كانت هذه النتيجة ممررة مباشرة إلى جملة شرطية مثل If…Then دون تدقيق مسبق، فقد يتسبب ذلك في انهيار المسار المنطقي. يُعالج هذا الاستثناء إما بدمج السلسلة مع قيمة نصية فارغة عبر المعامل & مثل (Cell.Value & “” Like Pattern) لضمان تحويلها إلى سلسلة نصية صريحة، أو بتوظيف جمل إدارة الأخطاء المنظمة:
On Error GoTo ErrorHandler
تضمن هذه المعالجة الهيكلية استقرار الماكرو عند مواجهة معطيات تالفة أو نصوص غير متوقعة، مع تسجيل السجلات المعطوبة في ملف تدقيق مستقل والاستمرار في تنفيذ العمليات المتبقية دون انقطاع.
10. أفضل الممارسات البرمجية وتحسين الأداء عند استخدام أحرف البدل
10.1 تحسين كفاءة استهلاك الموارد وسرعة المعالجة
على الرغم من الفاعلية العالية للمعامل Like، فإن استدعاءه المكثف والمتكرر داخل حلقات تدور لمئات الآلاف من المرات قد يفرض عبئاً زمنياً على المعالج، خاصة إذا تم الربط المباشر مع واجهة مستخدم إكسيل (Excel Worksheet DOM). تعتمد كفاءة الماكرو بدرجة أساسية على الطريقة التي يتعامل بها المطور مع الذاكرة واستدعاءات الكائنات:
- ترحيل البيانات إلى مصفوفات الذاكرة (Memory Arrays): بدلاً من فحص الخلايا خلية تلو الأخرى باستخدام Range.Cells(i, j).Value، يجب قراءة النطاق بالكامل ووضعه داخل مصفوفة ذاكرة ثنائية الأبعاد (Variant Array). تجري عمليات المطابقة باستخدام Like على المصفوفة المخزنة في الذاكرة العشوائية السريعة، مما يؤدي إلى خفض زمن التنفيذ بنسب تتجاوز 90% في المشاريع الكبرى.
- إيقاف الخصائص التفاعلية للبرنامج أثناء التنفيذ: من القواعد الهندسية الأساسية في VBA تعطيل تحديث الشاشة والحسابات التلقائية قبل بدء عملية المطابقة الكثيفة وإعادتها فور الانتهاء، وذلك عبر الأوامر البرمجية:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
يضمن تطبيق هذه الممارسات عزل محرك التحليل النصي عن الأحداث الجانبية لواجهة المستخدم، مما يتيح للمعالج تخصيص طاقته الكاملة لتقييم الشروط النصية والأنماط المعقدة.
10.2 الموازنة بين استخدام أحرف البدل والدوال البديلة
تستدعي الحوكمة الهندسية للشيفرات البرمجية إجراء مفاضلة واعية بين استخدام المعامل Like والدوال النصية البديلة المتاحة في مكتبة VBA القياسية، أو حتى اللجوء إلى محركات التعابير النمطية المتقدمة VBScript.RegExp. يوضح التوصيف المعياري التالي متى يتعين اعتماد كل أداة:
- استخدام دوال النصوص الصريحة (InStr / InStrRev / Left / Right / Mid): تُعد هذه الدوال الخيار الأمثل والأنقى من حيث الأداء الحسابي عندما يكون موضع المقطع النصي أو طوله ثابتاً ومحدداً سلفاً، ولا يتطلب الأمر أي تنوع في المحارف؛ حيث إن InStr تعمل بسرعة مضاعفة مقارنة بـ Like لكونها تفحص تطابقاً حرفياً مباشراً دون الحاجة لترجمة رموز البدل.
- استخدام المعامل Like مع أحرف البدل: يُعتبر الخيار الأفضل توازناً عندما تتطلب المعالجة مرونة في تحديد أطوال النصوص، أو استبعاد خانات، أو فحص تركيبات تدمج بين الأرقام والأحرف، دون الحاجة إلى تكبد العبء البرمجي الزائد لإنشاء كائنات خارجية.
- استخدام كائن التعابير النمطية المتقدمة (RegExp Object): يُلجأ إليه في الحالات المعقدة للغاية التي تعجز أحرف البدل البسيطة عن تلبيتها، مثل تتبع تكرار الكلمات المتجاورة، أو استخراج أجزاء محددة عبر مجموعات الالتقاط (Capture Groups)، أو استخدام خوارزميات الاستبدال المعقدة في النصوص غير المهيكلة كملفات XML وJSON.
يوضح هذا التحليل التكاملي أن أحرف البدل في VBA ليست مجرد أداة بحث سطحية، بل هي منظومة متكاملة من القواعد المنطقية التي تمكّن مطوري الأنظمة الإدارية والمحاسبية من بناء تطبيقات تتسم بالرصانة والدقة والكفاءة الحسابية العالية.
خاتمة
استعرض هذا المقال الأكاديمي الشامل الأسس النظرية والتطبيقية لاستخدام أحرف البدل في لغة Visual Basic for Applications (VBA)، مبيناً الأهمية المحورية لهذه الأدوات في الارتقاء بمستوى معالجة النصوص وتدقيق البيانات داخل البيئات المكتبية المؤتمتة. لقد اتضح من خلال التحليل المعمق للبنية التركيبية للمعامل Like ودلالات الرموز المختلفة — من النجمة المعبرة عن الاتساع الممتد، إلى علامة الاستفهام الضابطة للأطوال الفردية، ورمز الشباك المخصص للقيم العددية، وصولاً إلى الأقواس المعقوفة المحددة للمجموعات والنطاقات ونفيها — أن المطور يمتلك لغة استعلام قوية تتيح صياغة قوالب مرنة تلبي متطلبات التطبيقات الصناعية الأكثر تطلباً.
إن إتقان توظيف هذه الأدوات، والالتزام بإرشادات تحسين الأداء عبر إدارة الذاكرة بواسطة المصفوفات وضبط توجيهات مقارنة النصوص المناسبة، يُعد شرطاً أساسياً لبناء ماكروهات تتميز بالموثوقية والاستقرار التنفيذي، وتضمن حماية التطبيقات من الانهيار عند مواجهة السجلات المشوهة. تظل أحرف البدل في VBA الأداة الأكثر توازناً وكفاءة للمطور الراغب في الجمع بين بساطة الصياغة والسرعة الحوسبية العالية، مما يجعلها مهارة لا غنى عنها في جعبة كل من يسعى لاحتراف أتمتة الأعمال وتحليل البيانات المتقدم.
المراجع
- Pruijt, H. (2006). Social Interaction With Computers. Social Science Computer Review, 24(4), 458–473. https://doi.org/10.1177/0894439306287247
- Segal, T. (2025). My Digital ‘Friend’: Response Machine or Conversational Companion?. Doctoral dissertation, Queensland University of Technology. https://doi.org/10.5204/thesis.eprints.257422