VBA InStr | أهم 5 أمثلة لاستخدام وظيفة Excel VBA InStr

وظيفة Excel VBA InStr

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

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

بناء الجملة

لها 4 حجج كما هو موضح في الصورة أدناه.

  • [البداية]: هذا ليس إلزاميا. هذه هي القيمة العددية التي نحتاجها لتحديد موضع السلسلة النصية التي تبدأ وظيفة Instr في البحث عن النص المزود. على سبيل المثال: إذا كنت تريد البحث عن الحرف "a" في الكلمة "Bangalore" من الموضع الثالث ، فنحن بحاجة إلى إخبار موضع البداية لوظيفة Instr كـ 3. لذا من الموضع الثالث يكون الحرف "a" في الموضع الخامس. إذا تجاهلت هذه المعلمة ، فإن القيمة الافتراضية هي 1.
  • السلسلة 1: هذه هي السلسلة الفعلية التي نوفرها ، أي من هذا النص نحاول العثور على السلسلة الفرعية. على سبيل المثال ، إذا كنت تبحث عن السلسلة "a" في "Bangalore" ، فإن String 1 في Bangalore.
  • السلسلة 2: هذا ليس سوى ما هو السلسلة التي نبحث عنها. على سبيل المثال ، إذا كنت تبحث عن السلسلة "a" في "Bangalore" ، فإن String 2 هي a .
  • [قارن]: هذه مرة أخرى حجة اختيارية. هناك ثلاثة أنواع من الخيارات المتاحة في الوسيطة [قارن].

  • vbBinaryCompare: هذا ليس سوى بحث حساس لحالة الأحرف للسلسلة الفرعية (السلسلة 2) في السلسلة 1. على سبيل المثال ، إذا كنا نبحث عن "a" في كلمة "Bangalore" ، فسيعرض Instr 2 كنتيجة وإذا كنت تبحث بالنسبة إلى "A" في كلمة "Bangalore" ، فإن Instr سيعيد القيمة 0 كنتيجة لأن السلسلة المزودة هي قيمة الأحرف الكبيرة.

يمكننا أيضًا وضع صفر (0) كوسيطة.

vbTextCompare: هذا ليس بحثًا حساسًا لحالة الأحرف للسلسلة 2 في السلسلة 1. على سبيل المثال ، إذا كنا نبحث عن "a" في كلمة "Bangalore" ، فسيعرض Instr 2 كنتيجة وإذا كنت تبحث عن "A" في كلمة "بنغالور" سيعود Instr 2 أيضًا. المنطق هو أ = أ ، ب = ب ، ج = ج ... إلخ.

يمكننا أيضًا وضع واحد (1) كوسيطة.

vbDatabaseCompare: يستخدم هذا لمقارنة المعلومات من قاعدة البيانات الخاصة بك ، أي قاعدة بيانات Microsoft Access.

يمكننا أيضًا وضع واحد (-1) كوسيطة.

أهم 5 أمثلة على استخدام وظيفة VBA Instr

يمكنك تنزيل قالب Excel الخاص بوظيفة VBA Instr من هنا - قالب Excel الخاص بوظيفة VBA Instr

مثال 1

لنبدأ بالمثال الأول. في كلمة Bangalore ، ابحث عن موضع الحرف a.

أدناه رمز سوف يؤدي المهمة بالنسبة لنا.

رمز:

 Instr_Example1 () خافت i كمتغير i = InStr ("Bangalore"، "a") MsgBox i End Sub 

الآن قم بتشغيل رمز VBA الموضح أعلاه باستخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا كما هو موضح في لقطة الشاشة الموضحة أدناه.

انتاج:

المثال رقم 2

الآن في كلمة Bangalore ، ابحث عن موضع الحرف "a" من الموضع الثالث.

سوف يقوم الكود أدناه بتنفيذ المهمة بالنسبة لنا.

رمز:

 Instr_Example2 () خافت i كمتغير i = InStr (3، "Bangalore"، "a") MsgBox i End Sub 

لتشغيل الكود المذكور أعلاه ، يمكنك استخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا كما هو موضح في لقطة الشاشة الموضحة أدناه.

انتاج:

الآن في الصورة أعلاه ، انظر إلى الاختلاف عن الكود السابق. نظرًا لأننا ذكرنا موضع البداية للشخصية كـ 3 فقد تجاهلت الحرف الأول "a" في الموضع الثاني.

المثال رقم 3

الآن سنرى بحث حساس لحالة الأحرف. في كلمة Bangalore ابحث عن الحرف "A".

لهذا ، نحتاج إلى توفير وسيطة المقارنة كـ vbBinaryCompare.

رمز:

 Instr_Example3 () خافت i كمتغير i = InStr (1، "Bangalore"، "A"، vbBinaryCompare) MsgBox i End Sub 

الآن قم بتشغيل هذا الرمز باستخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا.

انتاج:

نظرًا لأننا قدمنا ​​وسيطة المقارنة حيث قامت دالة vbBinaryCompare Instr بإرجاع النتيجة على أنها صفر نظرًا لعدم وجود حرف كبير "A" .

المثال رقم 4

الآن سنرى بحثًا آخر حساسًا لحالة الأحرف. في كلمة Bangalore ابحث عن الحرف "A". أرجع المثال السابق النتيجة على أنها صفر.

للتغلب على النهج الحساس لحالة الأحرف هنا ، نحتاج إلى توفير وسيطة المقارنة كـ vbTextCompare.

رمز:

 Instr_Example4 () خافت i كمتغير i = InStr (1، "Bangalore"، "A"، vbTextCompare) MsgBox i End Sub 

الآن قم بتشغيل هذا الرمز باستخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا.

انتاج:

المثال الخامس

الآن سنرى المستوى المتقدم لوظيفة Instr. إذا كان لديك العديد من الأوراق التي لها اسم مشابه إلى حد ما وتريد إخفاء كل تلك الأوراق مرة واحدة ، فيمكننا استخدام الكود أدناه لإخفاء ورقة معينة.

على سبيل المثال ، لدي 5 أوراق باسم الملخص 1 والملخص 2 والملخص 3 والملخص 4 وصحيفة البيانات.

الآن أريد إخفاء كل تلك الأوراق التي تحتوي على كلمة "ملخص". استخدم الكود أدناه لإخفاء جميع الأوراق التي تحتوي على كلمة الملخص في اسمها.

رمز:

 Sub To_Hide_Specific_Sheet () Dim Ws As ورقة عمل لكل Ws في ActiveWorkbook.Worksheets If InStr (Ws.Name، "Summary")> 0 ثم Ws.Visible = xlSheetVeryHidden End إذا كانت دالة InStr التالية في Ws تبحث عن كلمة أو عبارة في اسم الورقة إذا وجد ، فسيكون مخفيًا. End Sub 

الآن قم بتشغيل هذا الرمز باستخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا ومشاهدة الإخراج.

وبالمثل من أجل إظهار كل تلك الأوراق ، استخدم الكود أدناه.

رمز:

 Sub To_UnHide_Specific_Sheet () Dim Ws As ورقة عمل لكل Ws في ActiveWorkbook.Worksheets If InStr (Ws.Name، "Summary")> 0 ثم Ws.Visible = xlSheetVisible End إذا كانت دالة InStr التالية في Ws تبحث عن كلمة أو عبارة في اسم الورقة إذا تم العثور عليه فسيكون مخفيًا End Sub 

الآن قم بتشغيل هذا الرمز باستخدام مفتاح F5 أو يمكنك أيضًا تشغيل هذا الرمز يدويًا ومشاهدة الإخراج.

أشياء للذكرى

  • Instr هي وظيفة حساسة لحالة الأحرف. للتخلص من هذه المشكلة الحساسة لحالة الأحرف ، تحتاج إلى تقديم الوسيطة [قارن] كـ.
  • إذا كنت تبحث عن حرف حساس لحالة الأحرف ، فأنت بحاجة إلى توفير الوسيطة [قارن] حيث يأخذ VBA هذه الوسيطة افتراضيًا حتى إذا لم تقم بتوفيرها.
  • Instr هي وظيفة VBA بحيث لا يمكنك استخدامها في ورقة عمل Excel مثل الصيغ المضمنة الأخرى.
  • إذا لم تتمكن الوظيفة من العثور على السلسلة 2 ، فستكون النتيجة صفرًا.