Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#59588
Olá, eu tenho uma planilha de fluxo de caixa onde nela eu coloco as saídas e entradas, através de uma lista suspensa,.

A planilha no geral é simples, são quatro colunas: Descrição do item, tipo (entrada/saida), pagamento (banco, dinheiro, etc) e valor (positivo ou negativo).

Eu queria uma forma de definir esse positivo e negativo automaticamente sem precisar ficar colocando o "menos", pois as vezes esqueço e acaba registrando como entrada o que era pra ser uma saída. Mesmo com a formatação condicional que coloquei pra ficar verde e vermelho nas entradas e saídas respectivamente, acabo errando.

Pensei que talvez tivesse alguma forma, talvez através de uma estrutura condicional (if/then) de colocar o valor como negativo na coluna de valor, caso a coluna de tipo esteja como "saída".

Se der pra fazer isso só com a fórmula do SE, também aceito, o que for mais fácil. Tentei aqui mas não tive sucesso. Eu estou usando VBA à alguns dias apenas e portanto não tenho experiência suficiente pra desenvolver isso.
#59589
Boa tarde
Eu uso assim, mas caso não for a linha do formato já ajuda muito



Sub total()

Dim x As Double
Dim y As Double
Dim Z As Double


x = Me.L_Despesa
y = Me.L_receita

Z = x - y


Me.L_Total = Format(Z, "R$ #,##0.00;-#,##0.00") 'essa linha faz o trabalho que você precisa



End Sub
#59592
JeanHard escreveu:Boa tarde
Eu uso assim, mas caso não for a linha do formato já ajuda muito



Sub total()

Dim x As Double
Dim y As Double
Dim Z As Double


x = Me.L_Despesa
y = Me.L_receita

Z = x - y


Me.L_Total = Format(Z, "R$ #,##0.00;-#,##0.00") 'essa linha faz o trabalho que você precisa



End Sub
Pelo o que entendi, esse código soma tudo e desconta as despesas, dando uma receita total, certo? Não é exatamente isso que preciso. Já tenho essa função de somar tudo, e descontar as despesas, inclusive separada por bancos e formas de pagamentos. Coloquei um print pra ver se entende melhor.

O que eu preciso é fazer com que, quando eu colocar lá como "SAÍDA" na segunda coluna, o número da quarta coluna (valor), fique negativo automaticamente. Preciso de uma função que transforme o valor em negativo de acordo com uma condição. Tipo um SOMASE, só que não vai somar, vai deixar negativo.

Imagem
#59593
mucascosta escreveu:Veja se o anexo lhe ajuda...

Eu já possuo a planilha, olhe a resposta que acabei de dar para o outro cara que me enviou o código de despesa total. Expliquei melhor e com um print.
#59594
Se vc usar assim L_Total = Format(Z, "-R$ #,##0.00;-#,##0.00") qualquer valor fica negativo ai é só adaptar pra vc ou post um modelo pra gente tentar ajudar
#59595
JeanHard escreveu:Se vc usar assim L_Total = Format(Z, "-R$ #,##0.00;-#,##0.00") qualquer valor fica negativo ai é só adaptar pra vc ou post um modelo pra gente tentar ajudar
Então, tentei esse código (talvez não faça sentido, mas meu conhecimento em lógica não é lá aprofundado, e em VBA, muito menos), mas não alterou para negativo.
Código: Selecionar todos
Sub Negativo()

Dim sTipo As String
Dim iValor As Integer

Set sTipo = ActiveWorksheet.Range("C73").Value
Set iValor = ActiveWorksheet.Range("E73").Value

If sTipo = "SAÍDA" Then Valor = Format(Z, "-R$ #,##0.00;-#,##0.00")

End Sub
Minha lógica foi, definir as células do tipo e a do valor (usei duas de exemplos, no caso a E73 pra valor e a C73 pra tipo), e então jogar uma condicional para se caso o TIPO esteja escrito "SAÍDA", o VALOR ia virar o format que você mandou para ficar em negativo, mas não foi.
#59596
Não ´format(z tem que ser
If sTipo = "SAÍDA" Then Valor = Format(ivalor, "-R$ #,##0.00;-#,##0.00")

vou ve se faço um modelo aqui pra vc rapidim
#59598
Vc disse:
"O que eu preciso é fazer com que, quando eu colocar lá como "SAÍDA" na segunda coluna, o número da quarta coluna (valor), fique negativo automaticamente. Preciso de uma função que transforme o valor em negativo de acordo com uma condição".

No modelo que anexei, substituindo o código por:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
    If Target.Offset(, 0).Value = "saída" And Target.Offset(, 2).Value > 0 Then
        Target.Offset(, 2).Value = (Target.Offset(, 2).Value) * -1
    ElseIf Target.Offset(, 0).Value = "entrada" And Target.Offset(, 2).Value < 0 Then
        Target.Offset(, 2).Value = (Target.Offset(, 2).Value) * -1
    End If
End Sub
Faz exatamente o que vc quer...
#59599
Meu amigo anexo o modelo se a condição for SAÍDA ele negativa na célula E73 se foi o que entendi é só adaptar pro seu código que é fácil ou se não conseguir chama aqui
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord