locked
Macro para Formatação Condicional RRS feed

  • Pergunta

  • Olá pessoal.

    Preciso de uma macro que, baseado no que está escrito na coluna A, pinta todas as outras células da mesma linha.

     

    Exemplo:

    Se A1 = "w", então B1:K1 fica em negrito e com o fundo de uma cor e a borda de outra.

     

    Vi alguns exemplos na net, mas todos eram "private sub" e eu não consigo chamar esse tipo de macro. Ela precisa ser private? É que eu pretendia atribuir essa macro a um botão.

     

    O que vcs sugerem?

    Desculpem pela ignorância...

     

    Valeu!


    terça-feira, 18 de janeiro de 2011 17:35

Respostas

  • Ivan, Pensei em algo como:

    Public Sub Marcar()
      Dim cont As Integer
      For cont = 1 To 5000
       If UCase(Cells(cont, 1)) = "W" Or UCase(Cells(cont, 1)) = "P" Then
         With Range("B" & cont & ":K" & cont)
          .Font.Bold = True
          .Interior.Color = RGB(200, 255, 255)
          .BorderAround , , , vbBlack
         End With
       End If
      Next
    End Sub


    Alexandre

    ps: não estou conseguindo formatar as mensagens no forum, tive que inserir as quebras de linhas manualmente :(
    • Marcado como Resposta Ivan4747 quarta-feira, 26 de janeiro de 2011 17:50
    segunda-feira, 24 de janeiro de 2011 17:18
  • Ivan,

    Vamos lá :)

    1) Troque essa linha de borders pra:
    .Borders(xlEdgeTop).Color = RGB(250, 22, 41)
    .Borders(xlEdgeBottom).Color = RGB(250, 22, 41)

    2) Sobre o alinhamento você pode usar:
    .HorizontalAlignment = xlLeft 'esquerdo
    .HorizontalAlignment = xlCenter 'centralizado
    .HorizontalAlignment = xlRight 'direito

    É isso mesmo?

    Alexandre
    • Marcado como Resposta Ivan4747 quarta-feira, 26 de janeiro de 2011 17:50
    quarta-feira, 26 de janeiro de 2011 16:07

Todas as Respostas

  • Ivan boa noite!

    Você precisa mesmo de um código? pois utilizando a formatação condicional você consegue perfeitamente.

    Para fazer selecione o intervalo de B1:K1 , vá em Inicio/formatação condicional, selecione nova regra, e depois usar uma fórmula...(última opção)

    Na fórmula coloque

    =A1="w"

    Clique em formatar, faça as alterações de acordo com sua necessidade, clique em Ok , e a formatação esta feita...

    Teste ai e qqer coisa fale.

    Att

     


    Bruno Silva Leite
    officevb.com
    terça-feira, 18 de janeiro de 2011 21:43
  • Bruno,

     

    Realmente, daria pra fazer assim.

    Mas tenho dois problemas:

     

    1) Tudo isso acontece numa planilha já criada por uma macro (é um código longo até chegar nesse ponto) então, mesmo se quisesse fazer isso, teria que ensinar  a macro a fazer essa formatação condicional de qualquer modo.

     

    2) Esse campo A (onde tenho P e W) na verdade é um auxiliar. Minha intenção é, depois da formatação condicional feita, deletar todos os valores da coluna A. Se eu fizer do jeito que sugeriu, ao apagar aqueles valores a formatação some também... :-/

     

    Achei macro na internet que ensina o excel a formatar NA HORA dependendo do valor da coluna A. Mas aí é o mesmo problema que contei a cima: apagando os dados de A ele apaga a formatação também. Preciso que ela FIQUE.

     

     

    quarta-feira, 19 de janeiro de 2011 11:46
  • Tudo que eu preciso é uma macro com a seguinte rotina:

     

    Correndo toda a coluna A de A1 até A5000, para cada valor "w" encontrado, deixar a linha correspondente da coluna B em NEGRITO, e com o FUNDO AZUL!

     

    Só me passem a parte da sintaxe do "for" que eu me viro. Eu testei algumas coisas aqui e não funcionou. :-(

    quinta-feira, 20 de janeiro de 2011 17:35
  • Ivan, Pensei em algo como:

    Public Sub Marcar()
      Dim cont As Integer
      For cont = 1 To 5000
       If UCase(Cells(cont, 1)) = "W" Or UCase(Cells(cont, 1)) = "P" Then
         With Range("B" & cont & ":K" & cont)
          .Font.Bold = True
          .Interior.Color = RGB(200, 255, 255)
          .BorderAround , , , vbBlack
         End With
       End If
      Next
    End Sub


    Alexandre

    ps: não estou conseguindo formatar as mensagens no forum, tive que inserir as quebras de linhas manualmente :(
    • Marcado como Resposta Ivan4747 quarta-feira, 26 de janeiro de 2011 17:50
    segunda-feira, 24 de janeiro de 2011 17:18
  • Perfeito, Alexandre!!! Muito bom!

    Era exatamente o que precisava!

     

    Antes de "Marcar como Resposta", só uma outra dúvida pequena:

     

    Estou usando esse código em outras planilhas e descobri as funções pras demais formatações (mudar tamanho de fonte, deixar itálico, etc...), mas DUAS coisas eu ainda não consigo fazer:

     

    1) eu preciso que o código:

    .Borders.Color = RGB(250, 22, 41)

    Valesse pra pintar apenas a parte de CIMA e de BAIXO da célula, ou seja, quero poder pintar só em cantos específicos. Por default ele ta pintando TODAS as bordas.

     

    2) Preciso de uma função dessas que mexa com o ALINHAMENTO. Algumas vezes eu quero centralizado, outras quero à esquerda. É possível?

     

     

    Abraço


    quarta-feira, 26 de janeiro de 2011 13:04
  • Ivan,

    Vamos lá :)

    1) Troque essa linha de borders pra:
    .Borders(xlEdgeTop).Color = RGB(250, 22, 41)
    .Borders(xlEdgeBottom).Color = RGB(250, 22, 41)

    2) Sobre o alinhamento você pode usar:
    .HorizontalAlignment = xlLeft 'esquerdo
    .HorizontalAlignment = xlCenter 'centralizado
    .HorizontalAlignment = xlRight 'direito

    É isso mesmo?

    Alexandre
    • Marcado como Resposta Ivan4747 quarta-feira, 26 de janeiro de 2011 17:50
    quarta-feira, 26 de janeiro de 2011 16:07
  • Muito Obrigado, Alexandre!

    É isso mesmo.

     

    Ivan

    quarta-feira, 26 de janeiro de 2011 17:50
  • Bruno, eu estava procurando essa condição, se respectiva celula tiver um texto especifico pintar tal celula de uma cor.

    Estou procurando mais de uma hora, uma vez eu precise e não consegui fazer.

    A sua dica me ajudo muuuuuuuuuuuuuuuuuuuuuuuito.

     

    Valeu.

    Valeu mesmo.

     

    Obrigado.

    Abraço.

     

     

    quinta-feira, 27 de janeiro de 2011 15:15