You are on page 1of 12

Pesquisas

1-Função InSTR

InStr é uma poderosa função de Sting VB. É a maneira perfeita de pesquisar e testar
strings em aplicativos robustos do Visual Basic 6.0. Este artigo mostra como chamar
o InStr para executar tarefas de processamento de texto avançadas rapidamente. O artigo
também discute insensibilidade a maiúsculas e minúsculas, vbTextCompare , Option
Compare Text e bugs relacionados InStr .

Sintaxe InStr

InStr retorna a primeira ocorrência de uma string dentro de outra string.

InStr([ start ,] string1 , string2 [, compare ])

começar
Opcional. Posição do caractere em que a pesquisa é iniciada. Se omitido,
a pesquisa começa no início da string1 , posição 1. Valores de entrada
válidos: 1 a Len( string1 )
string1
A string para pesquisar. Pode ser Null .
string2
A string para encontrar. Este é o texto que você deseja encontrar dentro
de string1 . Geralmente é mais curto que string1 . Pode ser Null.
comparar
Opcional. Especifica o tipo de comparação de cadeia.

 vbBinaryCompare (0) realiza uma comparação binária rápida em que


cada caractere corresponde apenas a si mesmo. Este é o padrão.
 vbTextCompare (1) realiza uma comparação de texto .
 vbDatabaseCompare (2). Para o Microsoft Access (somente Windows),
realiza uma comparação com base nas informações contidas no banco de
dados.
 Se você omitir comparar , o InStr usará a configuração da
instrução Option Compare .

Comparação binária é a opção mais segura. As regras de comparação de texto


variam de acordo com a localidade do sistema. Na comparação de texto, o que
corresponde a um computador pode não corresponder a outro.
Configurações

As configurações do argumento compare são:

Constant Valor Descrição

vbUseCompareOption -1 Executa uma comparação usando a


configuração da instrução Option
Compare.

vbBinaryCompare 0 Executa uma comparação binária.

vbTextCompare 1 Executa uma comparação textual.

vbDatabaseCompare 2 Somente Microsoft Access. Executa


uma comparação baseada nas
informações do seu banco de dados.

Valor de retorno
Se InStr retorna

string1 tem comprimento zero 0

string1 é Null Null

string2 tem comprimento zero início

string2 é Null Null

string2 não foi encontrada 0

string2 não for encontrada dentro da string1 Posição na qual a


correspondência é encontrada

start > string2 0


Exemplo 1: vbTextCompare (1)

Exemplo 2: vbBinaryCompare

Exemplo 3: Comparison is binary by default (last argument is omitted).

Exemplo 4:
https://translate.google.com/translate?hl=pt-
BR&sl=en&u=https://www.aivosto.com/articles/instr.html&prev=search

https://docs.microsoft.com/pt-br/office/vba/language/reference/user-interface-help/instr-
function

http://excelevba.com.br/vba-texto/
1- Importar o arquivo Cleanserv

2- Nosso objeto e procurar uma determinada unidade, achando vamos colorir o fundo
da célula de vermelho

3- Vamos fazer o mesmo procedimento de uma maneira mais rápida

4- Importar o arquivo Filtrocap


5- Fazer um procedimento para pesquisar um nome do vendedor e alterar a cor do fundo
da célula
6- Voltar a planilha Cleaserv. Vamos fazer a mesma pesquisa de outra maneira
7- Outra pesquisa. Usando o Find
Sub Procura()

Dim UltimaLinha As Long


Dim Busca As String

Busca = InputBox("Informe o termo procurado")


Range("B1048576").End(xlUp).Select 'CTRL + UP para Selecionar a ultima
celula preenchida de Baixo para Cima
UltimaLinha = ActiveCell.Row

Range("B1").Activate

Do While ActiveCell.Row <= UltimaLinha


'Busca uma parte do Texto no Campo
'INSTR = Na String | vbTextCompare = Compara 2 textos
If InStr(1, ActiveCell.Value, LCase(Busca), vbTextCompare) > 0 Then
ActiveCell.Interior.Color = vbRed
End If
ActiveCell.Offset(1, 0).Select
Loop

End Sub
Sub Procura2()

Dim Intervalo As Range


Dim Celula As Range
Dim Texto As String
Dim Compara As String
Dim UltimaLinha As Long
Dim Busca As String

Busca = InputBox("Informe o termo procurado")


Range("B1048576").End(xlUp).Select 'CTRL + UP para Selecionar a ultima
celula preenchida de Baixo para Cima
UltimaLinha = ActiveCell.Row

Range("B1").Activate

Set Intervalo = Range("B1:B" & UltimaLinha)

'Mais rapida porque utiliza variavel Range


For Each Celula In Intervalo
Compara = LCase(Celula) Like "*" & LCase(Busca) & "*" 'Like compara valores
If Compara Then
Celula.Interior.Color = vbYellow
End If
Next Celula

End Sub

Sub Procura3()

Dim UltimaLinha As Long


Dim Busca As String
Dim Pesquisa As Range
Dim Endereco As String

Busca = InputBox("Informe o termo procurado")


Range("B1048576").End(xlUp).Select 'CTRL + UP para Selecionar a ultima
celula preenchida de Baixo para Cima
UltimaLinha = ActiveCell.Row

With Range("B1:B" & UltimaLinha)


Set Pesquisa = .Find(LCase(Busca), After:=ActiveCell, LookIn:=xlValues,
lookat:=xlPart, Searchorder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
'xlPart = procura uma parte | xlwhole = procura
If Not (Pesquisa Is Nothing) Then
Endereco = Pesquisa.Address
Do
Pesquisa.Interior.Color = vbBlue
Set Pesquisa = .FindNext(Pesquisa)
Loop While Not Pesquisa Is Nothing And Pesquisa.Address <> Endereco
End If
End With

End Sub

Sub ProcuraEscolha()

Dim UltimaLinha As Long


Dim Busca As String
Dim Escolha As String

Escolha = MsgBox("Pesquisa por Função (clique em Sim) ou por Departamento


(Clique em Não)", vbYesNo, "Escolha")
Range("B1048576").End(xlUp).Select 'CTRL + UP para Selecionar a ultima
celula preenchida de Baixo para Cima
UltimaLinha = ActiveCell.Row

If Escolha = vbYes Then


Busca = InputBox("Informe a Função procurada.")
Range("B1").Activate

Do While ActiveCell.Row <= UltimaLinha


'Busca uma parte do Texto no Campo
'INSTR = Na String | vbTextCompare = Compara 2 textos
If InStr(1, ActiveCell.Value, LCase(Busca), vbTextCompare) > 0 Then
ActiveCell.Interior.Color = vbRed
End If
ActiveCell.Offset(1, 0).Select
Loop
Else
Busca = InputBox("Informe o Departamento procurado.")
Range("C1").Activate

Do While ActiveCell.Row <= UltimaLinha


'Busca uma parte do Texto no Campo
'INSTR = Na String | vbTextCompare = Compara 2 textos
If InStr(1, ActiveCell.Value, LCase(Busca), vbTextCompare) > 0 Then
ActiveCell.Interior.Color = vbRed
End If
ActiveCell.Offset(1, 0).Select
Loop
End If
End Sub

You might also like