none
Como fazer uma busca por uma célula que contenha apenas a letra desejada e como trabalhar com letras gregas? RRS feed

  • 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.

    quarta-feira, 9 de fevereiro de 2011 21:18

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 Range
        Set rng = Sheets("Plan1").Range("A1:E50").Find(What:=ChrW(945), LookAt:=xlWhole, MatchCase:=True)

     


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    sábado, 19 de fevereiro de 2011 14:14
    Moderador

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
    terça-feira, 15 de fevereiro de 2011 23:40
  • 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 Range
        Set rng = Sheets("Plan1").Range("A1:E50").Find(What:=ChrW(945), LookAt:=xlWhole, MatchCase:=True)

     


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    sábado, 19 de fevereiro de 2011 14:14
    Moderador
  • 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:

    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
    
    
    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".

     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.

     

    domingo, 27 de fevereiro de 2011 12:53
  • só uma correção: Disse que o botão 2 copia o valor em A2; mas é em B1.
    domingo, 27 de fevereiro de 2011 12:53