Ir ao conteúdo
  • Cadastre-se

Dúvida - Pintar Apenas Parte do Conteúdo da Célula


Ir à solução Resolvido por Wendell Menezes,

Posts recomendados

Boa noite.

 

Estou entrando agora para o mundo do VBA, e já me deparei com uma pequena barreira.

 

Tenho alguns padrões de cadastro que o cliente pediu para desenharmos e, após primeira verificação, eles pediram para inserirmos mais coisas e destacarmos elas. Por exemplo, tinhamos este padrão: {FIXO OLEO DIESEL} | {TIPO} | <FABRICANTE> | {CLASSIFICACAO} | {APRESENTACAO} | <REFERENCIA>

 

Acrescentamos dois conteúdos nele (fabricante e referência) e precisamos destaca-los em vermelho. O padrão ficou o seguinte: {FIXO OLEO DIESEL} | {TIPO} | <FABRICANTE> | {CLASSIFICACAO} | {APRESENTACAO} | <REFERENCIA> ..

 

Destaquei os conteúdos por "<" e ">" para colori-los, mas não consigo pintar eles via VBA, já que é um campo que pode variar de tamanho e de posicao.

 

O que eu precisaria é que ele ficasse assim dentro da minha célula: {FIXO OLEO DIESEL} | {TIPO} | <FABRICANTE> | {CLASSIFICACAO} | {APRESENTACAO} | <REFERENCIA> .

 

Alguém consegue me ajudar?

Link para o comentário
Compartilhar em outros sites

Se eu entendi o seu problema esses atributos (Tipo, fabricante,classificação, etc) estão todos dentro da mesma célula. Dito isso você precisa pintar de vermelho as palavras Fabricante e Referencia.

 

Se for isso mesmo o código abaixo faz isso, considerando que esse texto esteja na célula A1

Sub Victor()Range("A1").Characters(InStr(1, Range("A1"), "FABRICANTE"), Len("FABRICANTE")).Font.Color = 255Range("A1").Characters(InStr(1, Range("A1"), "REFERENCIA"), Len("REFERENCIA")).Font.Color = 255End Sub
Link para o comentário
Compartilhar em outros sites

Desculpe, lendo novamente entendi que você precisa destacar o que estiver entre <>. Nesse caso o código ficaria assim:

Sub Victor()    For l = 1 To Len(Range("A1"))        If Mid(Range("A1"), l, 1) = "<" Then            f = l + 1                ElseIf Mid(Range("A1"), l, 1) = ">" Then            t = l - f        End If        If f > 0 And t > 0 Then            Range("A1").Characters(f, t).Font.Color = 255            f = 0            t = 0        End If    NextEnd Sub
Link para o comentário
Compartilhar em outros sites

  • Solução

Do jeito que o código está escrito ele vai rodar na célula A1 da sheet que estiver ativa no momento.

 

Se você quer rodar o código a partir de um botão que fica em outra sheet você precisa adicionar:

Sheets("Nome da aba desejada").

Antes de cada Range("A1") do meu exemplo.

 

Ex:

For l = 1 To Len(Sheets("Nome da aba desejada").Range("A1"))
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!