Notifications
Clear all

Converter números com fonte vermelha para valores negativos

10 Posts
5 Usuários
0 Reactions
1,484 Visualizações
(@mannaliny)
Posts: 6
Active Member
Topic starter
 

Bom dia pessoal,

Tenho uma dúvida em relação a um código de macro.
Não consegui ainda chegar a algo compatível.

Gravei metade do que eu quero fazer e gostaria de editar esta mesma macro adicionando mais uma função.

O que eu necessito é que a macro identifique no range da coluna "I" por exemplo, todos os números que estiverem com a cor de fonte "vermelha" e que os multiplique por -1 para que se tornem valores negativos na minha planilha. É possível?

Estes são os códigos que já tenho na macro e que estão funcionando perfeitamente até então:

Sub Ajuste_Extrato()
'
' Ajuste_Extrato Macro
' Ajusta o extrato de forma rápida desde que o mesmo seja colado a partir da coluna G
'
' Atalho do teclado: Ctrl+Shift+E
'
Columns("H:I").Select
Range("H82").Activate
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Range("I82").Activate
Selection.Delete Shift:=xlToLeft
Columns("H:H").EntireColumn.AutoFit
Range("J101").Select
ActiveWindow.SmallScroll Down:=0
Columns("I:K").Select
Range("I82").Activate
Selection.Style = "Comma"
Columns("L:L").Select
Range("L82").Activate
Selection.Delete Shift:=xlToLeft

End Sub

Obrigadaaaa a todos!!!

 
Postado : 28/10/2015 8:06 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

MANNALINY,

Bom dia!

Confesso que não entendi o que você realmente quer. Identificar valor em vermelho na coluna I e multiplicá-los por -1 é fácil. O que não entendi é o que é que esse código abaixo faz, bem como o que tem a ver a identificação acima proposta com esse código...

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 28/10/2015 8:59 am
(@mannaliny)
Posts: 6
Active Member
Topic starter
 

Boa tarde Wagner,

Talvez eu não tenha me expressado bem...
Deixa eu explicar melhor...
Esquecendo esse código que eu coloquei...vamos partir do que interessa:

Eu trabalho com conciliação bancária, etc... e alimento uma planilha diariamente com inúmeras informações e uma delas é a informação que eu obtenho do extrato bancário.
Porém quando eu copio e colo as informações deste extrato no excel, os meus valores negativos no mesmo, são colados no excel como positivos, porém com a cor da fonte em vermelho.

Ao invés de eu filtrar estes e multiplicar por -1 para que fiquem negativos, gostaria de um comando no VBA que me ajudasse de forma a automatizar este processo...não sei se funcionaria como uma espécie de "SE" ou "If"...

Vou tentar descrever aqui o princípio DE FORMA COLOQUIAL...

=SE (VALORES DA COLUNA I = FONTE COR VERMELHA; MULTIPLICAR POR -1; " ")

Consegue me entender melhor? O que eu não consigo é encontrar um código compatível.

Obrigada desde já...

 
Postado : 28/10/2015 10:59 am
 vbah
(@vbah)
Posts: 12
Active Member
 

Mannaliny,

Se é isso que precisa:

Public Function ColorSignal(Rng As Range) As Double
    Application.Volatile
    Dim WD_Vlr As Double
    WD_Vlr = Rng.Value
    If Rng.Font.Color = 255 Then
        WD_Vlr = WD_Vlr * -1
    End If
        ColorSignal = WD_Vlr
End Function
 
Postado : 28/10/2015 11:16 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente também.

Sub AleVBA_17899()

Dim rng As Range
Set rng = [A2:A250] 'Altere para seu intervalo real
    For Each Cell In rng
        If Cell.Font.ColorIndex = 3 Then
           Cell.Value = Cell.Value * -1
        End If
        Cell.Font.ColorIndex = 1
    Next Cell
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/10/2015 11:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente também.

Sub AleVBA_17899()

Dim rng As Range
Set rng = [A2:A250] 'Altere para seu intervalo real
    For Each Cell In rng
        If Cell.Font.ColorIndex = 3 Then
           Cell.Value = Cell.Value * -1
        End If
        Cell.Font.ColorIndex = 1
    Next Cell
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/10/2015 11:38 am
(@mannaliny)
Posts: 6
Active Member
Topic starter
 

Mannaliny,

Se é isso que precisa:

Public Function ColorSignal(Rng As Range) As Double
    Application.Volatile
    Dim WD_Vlr As Double
    WD_Vlr = Rng.Value
    If Rng.Font.Color = 255 Then
        WD_Vlr = WD_Vlr * -1
    End If
        ColorSignal = WD_Vlr
End Function

VBAH, MUITO obrigada pela pronta ajuda...não consegui através desse código.

 
Postado : 05/11/2015 11:22 am
(@mannaliny)
Posts: 6
Active Member
Topic starter
 

Boa tarde!!

Tente também.

Sub AleVBA_17899()

Dim rng As Range
Set rng = [A2:A250] 'Altere para seu intervalo real
    For Each Cell In rng
        If Cell.Font.ColorIndex = 3 Then
           Cell.Value = Cell.Value * -1
        End If
        Cell.Font.ColorIndex = 1
    Next Cell
End Sub

Att

"alexandrevba" >> Muito obrigada mesmo!!
Eu consegui através do seu código deixar os valores em vermelho em negativo, ótimo!
Porém, ele comanda para deixar tudo em preto, e na verdade eu queria manter os negativos em vermelho. É possível?
Eu mudei o Código "Cell.Font.ColorIndex = 1 para 3 mas aí ele muda todos os valores do meu intervalo, inclusive os positivos...

Se puder ainda me ajudar eu agradeço.
Mas como já me ajudou com o principal, se me disse que nao consigo, encerro o tópico.

 
Postado : 05/11/2015 11:27 am
(@nelson-s)
Posts: 96
Trusted Member
 

Apague a linha "Cell.Font.ColorIndex = 1" e teste novamente...

Sub AleVBA_17899()

Dim rng As Range
Set rng = [A2:A250] 'Altere para seu intervalo real
    For Each Cell In rng
        If Cell.Font.ColorIndex = 3 Then
           Cell.Value = Cell.Value * -1
        End If
    Next Cell
End Sub
 
Postado : 05/11/2015 1:37 pm
(@mannaliny)
Posts: 6
Active Member
Topic starter
 

Muito obrigada!
Deu certo!!

 
Postado : 06/11/2015 11:53 am