Bagikan melalui


Mencari Teks dalam rentang lembar kerja secara terprogram

Metode FindRange objek memungkinkan Anda mencari teks dalam rentang. Teks ini juga bisa menjadi salah satu string kesalahan yang bisa muncul di sel lembar kerja seperti #NULL! atau #VALUE!. Untuk informasi selengkapnya tentang string kesalahan, lihat Nilai kesalahan sel.

Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek tingkat dokumen dan proyek Add-in VSTO untuk Excel. Untuk informasi selengkapnya, lihat Fitur yang tersedia berdasarkan aplikasi Office likasi dan jenis proyek.

Contoh berikut mencari rentang bernama Fruits dan memodifikasi font untuk sel yang berisi kata "apel". Prosedur ini juga menggunakan FindNext metode , yang menggunakan pengaturan pencarian yang ditetapkan sebelumnya untuk mengulangi pencarian. Anda menentukan sel setelahnya untuk dicari, dan FindNext metode menangani sisanya.

Catatan

Pencarian FindNext metode membungkus kembali ke awal rentang pencarian setelah mencapai akhir rentang. Kode Anda harus memastikan bahwa pencarian tidak terbungkus dalam perulangan tak terbatas. Prosedur sampel menunjukkan salah satu cara untuk menangani ini menggunakan Address[] properti .

Untuk mencari teks dalam rentang lembar kerja

  1. Deklarasikan variabel untuk melacak seluruh rentang, rentang pertama yang ditemukan, dan rentang yang ditemukan saat ini.

    Excel.Range currentFind = null; 
    Excel.Range firstFind = null;
    
  2. Cari kecocokan pertama, menentukan semua parameter kecuali sel yang akan dicari.

    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing);
    
  3. Lanjutkan pencarian selama ada kecocokan.

    while(currentFind != null)
    
  4. Bandingkan rentang pertama yang ditemukan (firstFind) dengan Tidak Ada. Jika firstFind tidak berisi nilai, kode akan menyimpan rentang yang ditemukan (currentFind).

    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Keluar dari perulangan jika alamat rentang yang ditemukan cocok dengan alamat rentang pertama yang ditemukan.

    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }
    
  6. Atur tampilan rentang yang ditemukan.

    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true;
    
  7. Lakukan pencarian lain.

    currentFind = Fruits.FindNext(currentFind);
    

    Contoh berikut menunjukkan metode lengkap.

Contoh

    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); 
        }
    }