Usuário com melhor resposta
Como fazer uma busca por uma célula que contenha apenas a letra desejada e como trabalhar com letras gregas?

Pergunta
-
Possuo um formulário que constrói gráficos a partir de qual propriedade está selecionada em um ComboBox. Ao selecionar a propriedade e clicar em OK, o programa percorre as planilhas em busca daquela palavra, uma vez que cada planilha é um registro.
Por exemplo, se eu selecionei "Renda", ele vai na primeira planilha, do João, procura onde está "Renda" (usando .find) e copia o valor da célula da frente para uma tabela em uma planilha "TabelaDoGráfico". Em seguida, vai na segunda planilha, do Joaquim, e assim por diante. Em seguida, constrói o gráfico baseado na tabela em "TabelaDoGráfico" e comparamos as rendas.
No entanto, uma das propriedades (Renda, IDH, peso, por exemplo) é dada por uma única letra, Q. Assim, ao procurar a letra "Q", ele encontrará dezenas de resultados, pois esta letra está em várias palavras. Assim, o programa não compila.
Portanto, como fazer com que um programa varra as planilhas em busca da célula correta? Como localizar a célula em que a única coisa escrita é a letra Q?
Por outro lado, se essa letra fosse uma letra grega, por exemplo, alfa, não teríamos como escrever esta letra em VBA (teríamos?). Pois bem, uma das propriedades é dada por esta letra grega, assim, como ela pode ser procurada?
Muito obrigado.
Respostas
-
Para buscar uma célula que contenha apenas uma letra Q em maiúsculo, use algo como:
Dim rng As Range
Set rng = Sheets("Plan1").Range("A1:E50").Find(What:="Q", LookAt:=xlWhole, MatchCase:=True)
Em relação ao alfa, para buscá-lo, use:Dim rng As RangeSet rng = Sheets("Plan1").Range("A1:E50").Find(What:=ChrW(945), LookAt:=xlWhole, MatchCase:=True)
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 16:12
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 16:12
Todas as Respostas
-
Mairon voce pode usar o MATCH CASE , ele identifica somente o que vc esta procurando, ele e um dos parametros do metodo FIND
teste por ai
Att
Bruno Silva Leite
officevb.com -
Para buscar uma célula que contenha apenas uma letra Q em maiúsculo, use algo como:
Dim rng As Range
Set rng = Sheets("Plan1").Range("A1:E50").Find(What:="Q", LookAt:=xlWhole, MatchCase:=True)
Em relação ao alfa, para buscá-lo, use:Dim rng As RangeSet rng = Sheets("Plan1").Range("A1:E50").Find(What:=ChrW(945), LookAt:=xlWhole, MatchCase:=True)
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 16:12
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 16:12
-
Interessante, então o "MatchCase" verifica se o termo buscado representa todo o valor da célula. Legal, isso evita que, se procurarmos "Q", encontre "Queijo", "porque", etc.
Mas hoje está sendo um dia das coisas não compilarem por aqui.
Para testar os códigos, criei um formulário com um combobox e três botões, com o seguinte código:
O primeiro botão toma alguns valores de uma coluna e atribuem adiciona ao combobox. Daí, vou ali no combobox e seleciono um deles, no caso, a letra grega ni - aquele v com um rabinho em cima (A1 contém "ni"; mas, no combobox, aparece "vê" (v). Para ver se o programa está interpretando corretamente, eu clico no botão dois para que o valor do combobox ("vê") seja impresso em A2. E realmente aparece "ni".Private Sub CommandButton1_Click() Dim mtx(4) As String mtx(1) = Range("A1").Value mtx(2) = Range("A2").Value mtx(3) = Range("A3").Value ComboBox1.AddItem mtx(1) ComboBox1.AddItem mtx(2) ComboBox1.AddItem mtx(3) End Sub Private Sub CommandButton2_Click() Range("B1").Value = ComboBox1.Text End Sub Private Sub CommandButton3_Click() Dim busca As Range Dim termo As String termo = ComboBox1.Text busca = Cells.Find(what:=termo, LookAt:=xlWhole, MatchCase:=True) Range("C5").Value = busca.Value End Sub
Agora, testo a busca. Clico no botão 3 para buscar o "ni", mas não está funcionando. Diz que a variável do bloco WITH (mas que with?) não foi definida.
-