Programowe wyszukiwanie tekstu w zakresach arkuszy
Find Metoda Range obiektu umożliwia wyszukiwanie tekstu w zakresie. Ten tekst może być również dowolnymi ciągami błędów, które mogą pojawić się w komórce arkusza, takiej jak #NULL!
lub #VALUE!
. Aby uzyskać więcej informacji na temat ciągów błędów, zobacz Wartości błędów komórek.
Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Excel. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.
Poniższy przykład wyszukuje zakres o nazwie Fruits
i modyfikuje czcionkę dla komórek zawierających wyraz "apples". Ta procedura używa FindNext również metody , która używa poprzednio ustawionych ustawień wyszukiwania, aby powtórzyć wyszukiwanie. Należy określić komórkę, po której ma być wyszukiwana, a FindNext metoda obsługuje resztę.
Uwaga
FindNext Wyszukiwanie metody opakowuje się z powrotem na początku zakresu wyszukiwania po osiągnięciu końca zakresu. Kod musi upewnić się, że wyszukiwanie nie owija się w nieskończonej pętli. Przykładowa procedura przedstawia jeden ze sposobów obsługi tej metody przy użyciu Address[] właściwości .
Aby wyszukać tekst w zakresie arkusza
Zadeklaruj zmienne do śledzenia całego zakresu, pierwszego znalezionego zakresu i bieżącego znalezionego zakresu.
Wyszukaj pierwsze dopasowanie, określając wszystkie parametry z wyjątkiem komórki do wyszukania.
Kontynuuj wyszukiwanie tak długo, jak istnieją dopasowania.
Porównaj pierwszy znaleziony zakres (
firstFind
) z wartością Nic. JeślifirstFind
nie zawiera żadnej wartości, kod przechowuje znaleziony zakres (currentFind
).Zakończ pętlę, jeśli adres znalezionego zakresu jest zgodny z adresem pierwszego znalezionego zakresu.
Ustaw wygląd znalezionego zakresu.
Wykonaj inne wyszukiwanie.
Poniższy przykład przedstawia kompletną metodę.
Przykład
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);
}
}