كيفية القيام بما يلي: البحث عن نص في نطاقات ورقة العمل.
ينطبق على |
---|
تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع. نوع المشروع
إصدار Microsoft Office
|
إن أسلوب Find للكائن Microsoft.Office.Interop.Excel.Range يمكّنك من البحث عن نص داخل النطاق. أيضاً يمكن أن يكون هذا النص أي من سلاسل الخطأ التي يمكن أن تظهر في خلية ورقة العمل مثل #NULL! أو #VALUE!. لمزيد من المعلومات حول سلاسل الخطأ راجع قيم الخطأ بالخلية .
يبحث المثال التالي على نطاق يسمى Fruits و يعدل الخط للخلايا التي تحتوي على الكلمة "apples". يستخدم هذا الإجراء أيضاً الأسلوب FindNext الذي يستخدم إعدادات البحث المعينة مسبقاً لتكرار البحث. تقوم بتحديد الخلية التي سيقوم بالبحث بعدها، ثم سيقوم الاسلوب FindNext بمعالجة الباقي.
ملاحظة
اسلوب البحث FindNext يلتف مرة أخرى إلى بداية نطاق البحث بعد وصوله إلى نهاية النطاق. يجب علي التعليمات البرمجية الخاصة بك أن تضمن أن البحث لا يلتف حول ذاته في حلقة لا نهائية. يوضح إجراء النموذج طريقة واحدة لمعالجة هذا باستخدام الخاصية Address.
للحصول على عرض فيديو توضيحي ذي صلة، راجع كيف يمكنني القيام بما يلي: استخدام أسلوب البحث في الوظيفة الاضافية لExcel ؟.
للبحث عن نص في نطاق ورقة العمل.
قم بالتصريح بالمتغيرات لتعقب النطاق بأكمله، النطاق المعثور عليه أولاً و النطاق المعثور عليه حالياً.
Dim currentFind As Excel.Range = Nothing Dim firstFind As Excel.Range = Nothing
Excel.Range currentFind = null; Excel.Range firstFind = null;
ابحث عن التطابق الأول، الذى يحدد كافة المعلمات فيما عدا الخلية المراد البحث فيها فيما بعد.
currentFind = Fruits.Find("apples", , _ Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _ Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
currentFind = Fruits.Find("apples", missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, missing, missing);
تابع البحث طالما أن هناك تطابقات.
While Not currentFind Is Nothing
while(currentFind != null)
قارن النطاق المعثور عليه أولاً ( firstFind) بـ Nothing. إذا كان firstFind لا يحتوي على أية قيمة، ستقوم التعليمات البرمجية بتخزين النطاق المعثور عليه ( currentFind) جانباً.
If firstFind Is Nothing Then firstFind = currentFind
if (firstFind == null) { firstFind = currentFind; }
اخرج من الحلقة إذا تطابق عنوان النطاق المعثور عليه مع عنوان النطاق الأول المعثور عليه.
ElseIf currentFind.Address = firstFind.Address Then Exit While End If
else if (currentFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing) == firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)) { break; }
قم بتعيين مظهر النطاق المعثور عليه.
With currentFind.Font .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red) .Bold = True End With
currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); currentFind.Font.Bold = true;
قم بإجراء بحث آخر.
currentFind = Fruits.FindNext(currentFind)
currentFind = Fruits.FindNext(currentFind);
يوضح المثال التالي الأسلوب الكامل.
مثال
Private Sub DemoFind()
Dim currentFind As Excel.Range = Nothing
Dim firstFind As Excel.Range = Nothing
Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")
' You should specify all these parameters every time you call this method,
' since they can be overridden in the user interface.
currentFind = Fruits.Find("apples", , _
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
While Not currentFind Is Nothing
' Keep track of the first range you find.
If firstFind Is Nothing Then
firstFind = currentFind
' If you didn't move to a new range, you are done.
ElseIf currentFind.Address = firstFind.Address Then
Exit While
End If
With currentFind.Font
.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
.Bold = True
End With
currentFind = Fruits.FindNext(currentFind)
End While
End Sub
private void DemoFind()
{
Excel.Range currentFind = null;
Excel.Range firstFind = null;
Excel.Range Fruits = Application.get_Range("A1", "B3");
// You should specify all these parameters every time you call this method,
// since they can be overridden in the user interface.
currentFind = Fruits.Find("apples", missing,
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
missing, missing);
while(currentFind != null)
{
// Keep track of the first range you find.
if (firstFind == null)
{
firstFind = currentFind;
}
// If you didn't move to a new range, you are done.
else if (currentFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)
== firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing))
{
break;
}
currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
currentFind.Font.Bold = true;
currentFind = Fruits.FindNext(currentFind);
}
}
راجع أيضًا:
المهام
كيفية القيام بما يلي: تطبيق أنماط إلى نطاقات في مصنفات
كيفية القيام بما يلي: الإشارة إلى نطاقات ورقة العمل في التعليمات البرمجية