Aracılığıyla paylaş


Nasıl yapılır: Çalışma Sayfası Aralıklarında Program Aracılığıyla Metin Arama

Microsoft.Office.Interop.Excel.Range nesnesinin Find yöntemi, aralık arasında metin aramanıza olanak sağlar.Bu metin, çalışma sayfası hücresinde görünen herhangi bir hata dizesi de olabilir, örn. #NULL! veya #VALUE!.Hata dizeleri hakkında daha fazla bilgi için bkz. Cell Error Values.

Uygulama alanı: Bu konudaki bilgiler Excel 2013 ve Excel 2010 uygulamalarının belge düzeyi projelerine ve uygulama düzeyi projelerine yöneliktir. Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

Aşağıdaki örnekte Fruits isimli aralık aranır ve "apples" kelimesi içeren hücrelerin yazı tipi değiştirilir.Bu yordamda ayrıca aramayı tekrarlamak için önceden ayarlanmış arama ayarlarını kullanan FindNext yöntemi kullanılır.Aramak için hücreyi belirlersiniz ve FindNext yöntemi geri kalanıyla ilgilenir.

[!NOT]

FindNext yönteminin araması, aralığın en sonuna geldiğinde, arama aralığının başına geri sarar.Kodunuzun, aramanın sonsuz döngüye girmediğine emin olması lazım.Örnek yordamda, Address özelliği kullanılarak bu olayla başa çıkmanın bir yolu gösterilir.

video bağlantısı İlgili video gösterimi için bkz: nasıl ı: bulma yöntemini kullanın bir Excel eklenti?.

Çalışma sayfaları aralıklarında metin aramak için

  1. Tüm aralığı izlemek için değişkenler bildirin; ilk bulunan aralık ve şimdi bulunan aralık.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Sonrasında arama yapılacak hücre dışında parametreleri belirleyerek, ilk eşleşme için arama yapın.

    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); 
    
  3. Eşleşme olduğu sürece aramaya devam edin.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. İlk bulunan aralıktan (firstFind) Nothing'e kadar karşılaştırın.Eğer firstFind hiçbir değer içermezse, kod bulunan aralığı (currentFind) biriktirip saklar.

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Eğer bulunan aralığın adresi, ilk bulunan aralığın adresiyle eşleşiyorsa döngüden çıkın.

    ElseIf currentFind.Address = firstFind.Address Then
        Exit While
    End If
    
    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }
    
  6. Bulunan aralığın görünümünü ayarlayın.

    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; 
    
  7. Başka bir arama gerçekleştirin.

    currentFind = Fruits.FindNext(currentFind)
    
    currentFind = Fruits.FindNext(currentFind); 
    

Aşağıdaki örnekte tamamlanmış bir yöntem gösterilmektedir.

Örnek

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(Excel.XlReferenceStyle.xlA1)
              == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
        {
            break;
        }

        currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        currentFind.Font.Bold = true; 

        currentFind = Fruits.FindNext(currentFind); 
    }
}

Ayrıca bkz.

Görevler

Nasıl yapılır: Program Aracılığıyla Çalışma Kitaplarındaki Aralıklara Biçimler Uygulama

Nasıl yapılır: Koddaki Çalışma Sayfası Aralıklarına Program Aracılığıyla Bakma

Kavramlar

Aralıklarla Çalışma

Office Çözümlerinde İsteğe Bağlı Parametreler