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
#60495
Boa noite pessoal. Estou criando um procedimento para calcular multa em atraso de pagamento (é só treinamento), mas estou com um problema nas caixas inputbox, msgbox e na janela 'verificação imediata'. Quando eu clico na tecla F8 os cálculos são exibidos na janela de 'variáveis locais", sem problemas. Porém eles não aparecem na janela 'verificação imediata'. Outra situação é que quando eu tento visualizar os resultados na planilha eles aparecem em branco, sem número algum após os dois pontos. Onde estaria erro, por gentileza? Obrigado.

Sub CalcMultaAt()
Dim curValorDev, curTotalPg As Currency
Dim intDiasAt, intMulta As Integer
'curValorDev = 10
InputBox ("Digite o valor devido: " & curValorDev)
MsgBox "Valor devido é igual a :" & curValorDev
'intDiasAt = 2
InputBox ("Digite a quantidade de dias em atraso: " & intDiasAt)
MsgBox "Dias em atraso é igual a :" & intDiasAt
intMulta = intDiasAt * 0.75
MsgBox "A Multa é igual a :" & intMulta
curTotalPg = curValorDev + intDiasAt
MsgBox "Total a pagar é igual a :" & curTotalPg
End Sub
#60505
Sub CalcMultaAt()
Dim curValorDev As Currency
Dim curTotalPg As Currency
Dim intDiasAt As Integer
Dim intMulta As Integer
Dim Ws As Worksheet: Set Ws = Planilha1
'curValorDev = 10
curValorDev = InputBox("Digite o valor devido: ") '<=== no inputbox o valor da variável vem antes
MsgBox "Valor devido é igual a : " & curValorDev
Ws.[B1].Value = curValorDev ' <====foi isso que você não fez
'intDiasAt = 2
intDiasAt = InputBox("Digite a quantidade de dias em atraso: ")
MsgBox "Dias em atraso é igual a :" & intDiasAt
Ws.[B2].Value = intDiasAt ' <====== Passando valor para a Planilha
intMulta = intDiasAt * 0.75
Ws.[B3].Value = intMulta
MsgBox "A Multa é igual a :" & intMulta
curTotalPg = curValorDev + intMulta ' <==== Você cobrou em cima dos dias e não do valor da multa
MsgBox "Total a pagar é igual a :" & curTotalPg
Ws.[B4].Value = curTotalPg

''''''''''''''''' minha dica'''''''''''''''''
'
' Essa para tirarmos 10
'
''''''''''''''''''''''''''''''''''''''''''''''
MsgBox "Valor devido é igual a : " & curValorDev & Chr(13) & _
"Dias em atraso: " & intDiasAt & Chr(13) & _
"A Multa é igual a : " & intMulta & Chr(13) & _
"Total a pagar é igual a : " & curTotalPg, vbInformation + vbOKOnly, _
" CONFIRMAÇÃO DE DADOS"


End Sub

A forma que você declarou a variável está errada, pois somente a que está mais próxima da palavra as será declarada como Currency ou Integer, ou seja, curValorDev e intDiasAt você pensa que são Currency e Integer, respectivamente, porém as 2 estão como Variant.
Isso é perigoso, pois ela aceita Strings e poderá dar uma dor de cabeçã em sistema mais complexos.
Eu declaro minhas planilhas como variáveis, pois se precisar fazer qualquer modificação posterior no código, ou layout ( e já fiz inúmeras vezes), fica mais fácil de ajustar e outro detalhe, tenha total controle de onde estão indo as suas informações.
Coloquei um CommandButton em ActiveX para que você pare de teclar F8.
Espero que tenha ajudado em algo.
Abraço
Você não está autorizado a ver ou baixar esse anexo.
riberex00 agradeceu por isso
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