البحث عن التالي VBA | كيفية استخدام وظيفة FindNext في Excel VBA؟
برنامج Excel VBA Find Next
كما هو الحال في Excel عندما نضغط على CTRL + F ، ينبثق مربع معالج يسمح لنا بالبحث عن قيمة في ورقة العمل المحددة وبمجرد العثور على القيمة ، نضغط على "بحث" التالي للعثور على القيمة المماثلة الأخرى ، حيث إنها ميزة ورقة عمل نقوم بها يمكن أيضًا استخدامه في VBA كطريقة لخاصية التطبيق مثل application.findnext لنفس الأغراض.
من الجيد العثور على القيمة المحددة في النطاق المذكور ، ولكن ماذا لو كان المتطلب هو العثور على القيمة ذات التكرارات المتعددة. في إحدى المقالات السابقة ، ناقشنا طريقة "البحث" في VBA وهي ليست معقدة على الإطلاق ولكن العثور على جميع التكرارات ممكن فقط باستخدام طريقة "Find Next" في excel VBA.
في هذه المقالة ، سنوضح لك كيفية استخدام هذا "بحث عن التالي" في Excel VBA.
ما هو البحث عن التالي في Excel VBA؟
نظرًا لأن الكلمة تقول "بحث عن التالي" ، فهذا يعني من الخلية التي تم العثور عليها ، استمر في البحث عن القيمة التالية حتى تعود إلى الخلية الأصلية حيث بدأنا البحث.
هذه هي النسخة المتقدمة من طريقة "Find" التي تبحث مرة واحدة فقط عن القيمة المذكورة في النطاق المذكور.
يوجد أدناه بناء جملة طريقة FIND NEXT في Excel VBA.
بعد: هي الكلمة التي نبحث عنها.
أمثلة على البحث عن الطريقة التالية في Excel VBA
فيما يلي أمثلة للبحث عن الطريقة التالية في excel VBA.
على سبيل المثال ، انظر إلى البيانات أدناه.
يمكنك تنزيل قالب VBA Find Next Excel هنا - VBA Find Next Excel Templateالخطوة # 1 - في هذه البيانات ، نحتاج إلى العثور على اسم المدينة "بنغالور". لنبدأ الإجراء الفرعي في محرر Visual Basic.
رمز:
فرعي RangeNext_Example () End Sub
الخطوة # 2 - أولاً ، قم بتعريف المتغير ككائن "Range".
رمز:
Sub RangeNext_Example () Dim Rng كنطاق نهاية فرعي
الخطوة # 3 - اضبط المرجع لمتغير الكائن على أنه "Range (“ A2: A11 ”).
رمز:
Sub RangeNext_Example () Dim Rng كمجموعة نطاق Rng = النطاق ("A2: A12") End Sub
نظرًا لوجود بيانات قائمة المدينة الخاصة بنا في نطاق الخلايا من A2 إلى A11 في هذا النطاق فقط سنبحث عن مدينة "بنغالور".
نظرًا لأننا قمنا بتعيين مرجع النطاق إلى المتغير "Rng" ، فإننا نستخدم هذا المتغير بدلاً من استخدام RANGE ("A2: A11") في كل مرة.
الخطوة # 4 - استخدم متغير RNG وافتح طريقة البحث.
رمز:
Sub RangeNext_Example () Dim Rng كمجموعة نطاق Rng = النطاق ("A2: A12") Rng.Find End Sub
الخطوة # 5 - الوسيطة الأولى لطريقة FIND هي "What" ، أي ما نحاول البحث عنه في النطاق المذكور ، وبالتالي فإن القيمة التي نبحث عنها هي "Bangalore".
رمز:
Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") Rng.Find What: = "Bangalore" End Sub
الخطوة # 6 - لإظهار أي خلية وجدنا هذه القيمة ، أعلن عن متغير آخر كسلسلة.
رمز:
Sub RangeNext_Example () خافت Rng كنطاق خافت خافت كسلسلة مجموعة Rng = نطاق ("A2: A12") Rng.Find What: = "Bangalore" End Sub
الخطوة # 7 - بالنسبة لهذا المتغير ، قم بتعيين عنوان الخلية الموجود.
رمز:
Sub RangeNext_Example () خافت Rng كنطاق خافت للخلايا كمجموعة سلسلة Rng = نطاق ("A2: A12"). ابحث عن (ما: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End Sub
الخطوة # 8 - اعرض الآن نتيجة متغير عنوان الخلية المعين في مربع الرسالة في VBA.
Sub RangeNext_Example () Dim Rng كنطاق خافت خافت كمجموعة سلسلة Rng = نطاق ("A2: A12"). ابحث عن (ما: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng. Address MsgBox CellAddress End الفرعية
الخطوة # 9 - قم بتشغيل الكود وشاهد ما سنحصل عليه هنا.
لذلك وجدنا القيمة "Bangalore" في الخلية A5. باستخدام طريقة Find ، يمكننا العثور على خلية واحدة فقط ، لذا بدلاً من FIND نحتاج إلى استخدام FIND NEXT في excel VBA.
الخطوة # 10 - نحتاج إلى الإشارة إلى متغير كائن النطاق ولكن باستخدام طريقة FIND NEXT في excel VBA.
رمز:
Sub RangeNext_Example () خافت Rng كنطاق خافت خافت كمجموعة سلسلة Rng = نطاق ("A2: A12"). ابحث عن (ما: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = النطاق ("A2: A12"). FindNext (Rng) End Sub
كما ترى أعلاه ، فقد استخدمنا طريقة VBA FIND NEXT ولكن داخل الوظيفة ، استخدمنا اسم متغير كائن النطاق.
الخطوة # 11 - الآن عيّن مرة أخرى عنوان الخلية وأظهر العنوان في مربع الرسالة.
رمز:
Sub RangeNext_Example () خافت Rng كنطاق خافت خافت كمجموعة سلسلة Rng = نطاق ("A2: A12"). ابحث عن (ما: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = النطاق ("A2: A12"). FindNext (Rng) CellAddress = Rng.Address MsgBox CellAddress End Sub
الخطوة # 12 - قم بتشغيل الماكرو وشاهد ما سنحصل عليه في مربع الرسالة الأول.
الخطوة # 13 - يعرض مربع الرسالة الأول القيمة "Bangalore" الموجودة في الخلية A5 ، انقر فوق الزر "موافق" لرؤية القيمة التالية التي تم العثور عليها.
تم العثور على القيمة الثانية في خلية A7 ، اضغط على "موافق" للمتابعة.
VBA Find Next (باستخدام Loop)
سيتم الخروج من الإجراء الفرعي لـ VBA ولكننا سنجده في الخلية A10. عندما يتم العثور على القيم في أكثر من خلية واحدة ، فمن الأفضل استخدام الحلقات.
في هذه الحالة ، لدينا أيضًا قيمة "Bangalore" في أكثر من خلية واحدة ، لذلك نحتاج إلى تضمين الحلقات هنا.
الخطوة # 14 - أولاً ، أعلن عن متغيرين على أنهما النطاق.
رمز:
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كنطاق نهاية فرعي
الخطوة # 15 - قم بتعيين مرجع المتغير الأول كما هو موضح أدناه.
رمز:
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كمجموعة نطاق Rng = نطاق ("A2: A11"). ابحث عن (ماذا: = "Bangalore") End Sub
الخطوة # 16 - بالنسبة للمتغير الثاني ، اضبط المرجع باستخدام وظيفة FIND VBA.
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كمجموعة نطاق Rng = نطاق ("A2: A11"). ابحث عن (ما: = "Bangalore") تعيين FindRng = Rng.FindNext ("Bangalore") End Sub
الخطوة # 17 - قبل أن نبدأ في البحث عن القيمة ، نحتاج إلى تحديد الخلية التي نبدأ البحث منها ، لأن ذلك يعلن المتغير كسلسلة.
رمز:
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كمجموعة نطاق Rng = نطاق ("A2: A11"). ابحث عن (ما: = "Bangalore") تعيين FindRng = Rng.FindNext ("Bangalore") تعتيم الخلية الأولى كسلسلة FirstCell = Rng. Address End Sub
الخطوة # 18 - بالنسبة لهذا المتغير ، قم بتعيين عنوان الخلية الأول.
رمز:
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كمجموعة نطاق Rng = نطاق ("A2: A11") تعيين FindRng = Rng.Find (What: = "Bangalore") تعتيم الخلية الأولى كسلسلة FirstCell = Rng.Address End Sub
الخطوة # 19 - نحتاج الآن إلى تضمين حلقة "Do while" للتكرار عبر جميع الخلايا والعثور على قيمة البحث.
رمز:
Sub RangeNext_Example1 () خافت Rng كنطاق خافت FindRng كمجموعة نطاق Rng = نطاق ("A2: A11"). ابحث عن (ما: = "Bangalore") تعيين FindRng = Rng.FindNext ("Bangalore") تعتيم الخلية الأولى كسلسلة FirstCell = Rng. Address Do Loop أثناء FirstCell Cell.Address End Sub
داخل الحلقة أذكر مربع الرسالة وطريقة VBA FIND NEXT.
الخطوة # 20 - يوجد أدناه الرمز الكامل لك.
رمز:
FindNext_Example () خافت FindValue كسلسلة FindValue = "Bangalore" Dim Rng As Range Set Rng = Range ("A2: A11") Dim FindRng As Range Set FindRng = Rng.Find (What: = FindValue) تعتيم الخلية الأولى كسلسلة FirstCell = FindRng.Address Do MsgBox FindRng.Address Set FindRng = Rng.FindNext (FindRng) Loop أثناء FirstCell FindRng.Address MsgBox "Search is over" End Sub
الخطوة # 21 - سيستمر هذا في إظهار جميع عناوين الخلية المطابقة وفي النهاية ، ستظهر الرسالة على أنها "انتهى البحث" في مربع الرسالة الجديد.
أشياء للذكرى
- يمكن أن تجد طريقة FIND قيمة واحدة فقط في كل مرة.
- يمكن لـ FIND NEXT في Excel VBA العثور على القيمة التالية من خلية القيمة الموجودة بالفعل.
- استخدم حلقة "Do while" للتكرار خلال كل الخلايا الموجودة في النطاق.