Como: Pesquisar texto em intervalos de planilha
O Find método de Microsoft.Office.Interop.Excel.Range objeto lhe permite pesquisar texto no intervalo. Esse texto também pode ser as cadeias de erro podem aparecer em uma célula de planilha, como #NULL! ou #VALUE!. Para obter mais informações sobre seqüências de erro, consulte Os valores de erro de célula.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2007 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
O exemplo seguinte procura um intervalo chamado Fruits e modifica a fonte para as células que contêm a palavra "maçãs". Este procedimento também usa o FindNext método, que usa definidos anteriormente pesquisar configurações para repetir a pesquisa. Especifique a célula após ser pesquisado e o FindNext método manipula o resto.
Observação |
---|
O FindNext dispõe de pesquisa de método volta ao início do intervalo de pesquisa após ele atingiu o final do intervalo. Seu código deve garantir que a pesquisa não se dispõe ao redor em um loop infinito. O procedimento de exemplo mostra uma maneira de lidar com isso usando o Address propriedade. |
Para uma demonstração de vídeo relacionada, consulte Fazer como i: Use o método Find em um suplemento do Excel?.
Para procurar texto em um intervalo de planilha
Declare variáveis para rastreamento de todo o intervalo, o primeiro intervalo encontrado e intervalo atual encontrado.
Dim currentFind As Excel.Range = Nothing Dim firstFind As Excel.Range = Nothing
Excel.Range currentFind = null; Excel.Range firstFind = null;
Procure a primeira correspondência, especificando a todos os parâmetros, exceto da célula para pesquisar depois.
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);
Continue a pesquisa como há correspondências.
While Not currentFind Is Nothing
while(currentFind != null)
Comparar o primeiro intervalo encontrado (firstFind) para Nothing. Se firstFind não contém nenhum valor, os armazenamentos de código fora o intervalo encontrado (currentFind).
If firstFind Is Nothing Then firstFind = currentFind
if (firstFind == null) { firstFind = currentFind; }
Sair do loop se o endereço do intervalo encontrado corresponde ao endereço do primeiro intervalo encontrado.
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; }
Defina a aparência do intervalo encontrado.
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;
Execute outra pesquisa.
currentFind = Fruits.FindNext(currentFind)
currentFind = Fruits.FindNext(currentFind);
O exemplo a seguir mostra o método complete.
Exemplo
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);
}
}
Consulte também
Tarefas
Como: Aplicar estilos a intervalos em pastas de trabalho
Como: Consulte intervalos de planilha no código