NADA ANTES DA VIRGULA GERA ERRO

 Tópico anterior Próximo tópico Novo tópico

NADA ANTES DA VIRGULA GERA ERRO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#495367 - 09/10/2020 13:33:08

VIVIANEARRAIS
BALSAS
Cadast. em:Setembro/2020


Buenas tarde pessoas...

tenho 3 objetos.... valor, quant e total

uso a seguinte calculo:

Private Sub Calcular_Total()
Dim var_Quant As Double
Dim var_VALOR As Currency, var_Total As Currency

If txtQuant.Text = ',' Then txtQuant.Text = '0,'

If txtQuant.Text = '' Then var_Quant = 1 Else var_Quant = txtQuant.Text
If txtValor.Text = '' Then var_VALOR = 0 Else var_VALOR = txtValor.Text

var_Total = var_VALOR * var_Quant
txtTotal.Text = Format(var_Total, ocMONEY)
End Sub


Porem para eliminar letras ou qualquer coisa q nao fosse numerico nos valores, fiz o seguinte:
Public Function aNumeros(ByVal KeyAscii As Integer, Optional Virgula As Boolean = False, Optional Ponto As Boolean = False) As Integer
   Dim iRet As Integer
   'Função para permitir números, vírgulas e ponto

   Select Case KeyAscii
      Case 8, 13: iRet = KeyAscii
      Case 44: iRet = IIf(Virgula, 44, 0)
      Case 46: iRet = IIf(Ponto, 46, 0)
      Case 48 To 57: iRet = KeyAscii
      Case Else: iRet = 0
   End Select
  
   'Retorna a tecla pressionada
   aNumeros = iRet
End Function


Private Sub txtValor_KeyPress(KeyAscii As Integer)
KeyAscii = aNumeros(KeyAscii, True)
Calcular_Total
End Sub


Porem se caso eu comece o valor com 'nada antes' da virgula, dar erro
0,50 = dar certo
,50 = dar erro
como faria nesse caso, caso o cliente nao queira digitar o zero a esquerda?




#495369 - 09/10/2020 14:38:50

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
To notando uma coisa esquisita ultimamente, porque as pessoas falam como 'índio' com verbos no infinitivo? 'Dar erro', onde me parece cer 'Dá erro' e 'dar certo' onde parece mais adequado 'dá certo'. O verbo 'dar' conjugado no presente do indicativo, terceira pessoa do singular é 'dá'.

Mas enfim. O seu método de verificação para números, está meio estranho, ele não confere na real se é um número ou não...
Sugiro o uso da função IsNumeric

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495374 - 09/10/2020 18:16:54

MFLAVIO
CAMPINAS
Cadast. em:Maio/2009


Citação:
:
Buenas tarde pessoas...

tenho 3 objetos.... valor, quant e total

uso a seguinte calculo:

Private Sub Calcular_Total()
Dim var_Quant As Double
Dim var_VALOR As Currency, var_Total As Currency

If txtQuant.Text = ',' Then txtQuant.Text = '0,'

If txtQuant.Text = '' Then var_Quant = 1 Else var_Quant = txtQuant.Text
If txtValor.Text = '' Then var_VALOR = 0 Else var_VALOR = txtValor.Text

var_Total = var_VALOR * var_Quant
txtTotal.Text = Format(var_Total, ocMONEY)
End Sub


Porem para eliminar letras ou qualquer coisa q nao fosse numerico nos valores, fiz o seguinte:
Public Function aNumeros(ByVal KeyAscii As Integer, Optional Virgula As Boolean = False, Optional Ponto As Boolean = False) As Integer
   Dim iRet As Integer
   'Função para permitir números, vírgulas e ponto

   Select Case KeyAscii
      Case 8, 13: iRet = KeyAscii
      Case 44: iRet = IIf(Virgula, 44, 0)
      Case 46: iRet = IIf(Ponto, 46, 0)
      Case 48 To 57: iRet = KeyAscii
      Case Else: iRet = 0
   End Select
  
   'Retorna a tecla pressionada
   aNumeros = iRet
End Function


Private Sub txtValor_KeyPress(KeyAscii As Integer)
KeyAscii = aNumeros(KeyAscii, True)
Calcular_Total
End Sub


Porem se caso eu comece o valor com 'nada antes' da virgula, dar erro
0,50 = dar certo
,50 = dar erro
como faria nesse caso, caso o cliente nao queira digitar o zero a esquerda?


antes de executar os Cálculos, Porque você não formata os valores digitados

Deus e o maior dos Programadores, ele criou tudo em liguagem visual
                                           .... e viu Deus que era bom


#495379 - 10/10/2020 16:14:25

JOSE
CONGONHAS
Cadast. em:Dezembro/2003


 Anexos estao visíveis somente para usuários registrados

VIVIANEARRAIS,
veja algumas mudanças no aquivo em anexo. Funciona tanto com ponto ou com vírgula. Pode digitar com 0,5 ou ,5.




 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário