Página 1 de 1

Caixa InputBox, MsgBox e 'janela de verificação imediata'.

Enviado: 13 Nov 2020 às 22:28
por riberex00
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

Re: Caixa InputBox, MsgBox e 'janela de verificação imediata'.

Enviado: 15 Nov 2020 às 06:54
por Strogonoff
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

Re: Caixa InputBox, MsgBox e 'janela de verificação imediata'.

Enviado: 15 Nov 2020 às 17:42
por riberex00
Obrigado pelas orientações. Ajudou muito. Ficarei atento a elas. :D

Re: Caixa InputBox, MsgBox e 'janela de verificação imediata'.

Enviado: 17 Nov 2020 às 21:24
por riberex00
Por que ele arredonda o valor da multa? Por exemplo num valor de 10,00, com 5 dias de atraso x 0.75 = 3.75 , o valor total a pagar seria = a 13,75. Mas o programa arredonda para 14,00. Como corrigir isso?

Re: Caixa InputBox, MsgBox e 'janela de verificação imediata'.

Enviado: 17 Nov 2020 às 22:18
por Strogonoff
Não observei que o valor da multa estava em integer, e essa variável somente trabalha com número inteiro
Mude para long ou currency