Boa tarde a todos, estou com uma duvida que vem me tirando noites de sono.
Gostaria de saber como mudar a cor da fonte de apenas 1 palavra na celula.
EX. A5 "SAMSUNG OS (4589)"
A6 "LG OS (8598)"
Gostaria de alguma macro que analisa-se oque está escrito na celular e pinta-se somente os números que estão entre parenteses. Ou alguma macro que localiza-se oque está escrito e muda-se de cor somente os números que tiver escrito na celula.
Obrigado.
- Home
- >
- Fórum
- >
- Windows, Softwa...
- >
- Suítes de escri...
- >
- Excel, Como mudar a cor d...
Movido da sala "Programas" para a sala "Suítes de Escritório"
Bem vindo à Comunidade do Hardware, @Eduardo9969
Faça um teste com este código:
Sub FormataNúms()
Dim rg As Range, c As Range, m As Object
Set rg = Application.InputBox(Prompt:="Selecione as células", Title:="Formatar Números", Type:=8)
With CreateObject("VBScript.Regexp"
.Pattern = "\d+": .Global = True
For Each c In rg
For Each m In .Execute(c.Value)
With c.Characters(Start:=m.FirstIndex + 1, Length:=m.Length)
.Font.Color = vbRed
.Font.Bold = True
End With
Next m
Next c
End With
End Sub
Eu fiz o teste e não muda só a cor do que está entre parênteses: A5 SAMSUNG OS (4589)
Mas muda também a cor se houver algum número fora do parênteses: A5 SAMSUNG OS (4589)
Não há forma de mudar automaticamente sem que enhamos que estar a escoler??
Isso pergunto eu, o autor do post pode não querer isso.
Obrigado
Cumps
O post original pedia, no último trecho, que Eduardo9969 disse: ...muda-se de cor somente os números que tiver escrito na celula.
Mas se seu interesse é apenas nos números que estão entre parênteses, use o seguinte código (selecione as células antes de rodar a macro):
Sub FormataNúms()
Dim rg As Range, c As Range, m As Object
On Error GoTo Sair 'Caso a seleção seja outro objeto que não uma célula, não faz nada.
Set rg = Selection
With CreateObject("VBScript.Regexp"
.Pattern = "\(\d+\)": .Global = True
For Each c In rg
For Each m In .Execute(c.Value)
With c.Characters(Start:=m.FirstIndex + 2, Length:=m.Length - 2)
.Font.Color = vbRed: .Font.Bold = True
End With
Next m
Next c
End With
Sair:
Set rg = Nothing: Set c = Nothing: Set m = Nothing
Exit Sub
End Sub
Obrigado desde pelo código.
Pergunto uma coisa, isto não tem forma de se fazer automaticamente sem que tenha que selecionar??
Obrigado
Cumps
Tem várias formas de fazer. Essa forma seria, digamos, sob demanda, ou seja, é executada manualmente e somente o momento em que se deseja. Mas dá pra fazer com que execute automaticamente após o valor ser digitado na célula ou sempre que uma determinada célula ou células ou planilha sofra alteração, etc. Tudo vai depender do que vc espera que seja feito. Para isso tente explicar exatamente o que vc quer.
O que eu pretendo é: sempre que de determinada célula até determinada celula, a cor mude.
Exemplo, de C7 até C102
Cumps
Aí é só alterar a referência:
onde está
Set rg = Selection
altere para
Set rg = ActiveSheet.Range("C7:C102")
Ok
Obrigado
Cumps