Achei esse código na internet que funcionou muito bem para a função que eu queria, mas não está aceitando digitar números do NumPad, só aceita os números que ficam em cima das letras no teclado. Se eu incluo exceção para os códigos de teclas do NumPad ele buga e não funciona direito.
Como posso consertar isso?
Private Sub txtValorCP_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim zTemp As String
txtValorCP.TextAlign = fmTextAlignRight
If IsNumeric(Chr(KeyCode)) Or KeyCode = 8 Then
If txtValorCP.Text <> "" Then
zTemp = txtValorCP.Text & IIf(KeyCode <> 8, Chr(KeyCode), "")
zTemp = Right(zTemp, Len(zTemp) - 2)
zTemp = Replace(zTemp, ".", "")
zTemp = Replace(zTemp, ",", "")
If KeyCode = 8 Then
If Len(zTemp) > 3 Then
zTemp = Left(zTemp, Len(zTemp) - 1)
Else
zTemp = "0" & Left(zTemp, Len(zTemp) - 1)
End If
End If
zTemp = Left(zTemp, Len(zTemp) - 2) & "." & Right(zTemp, 2)
Else
zTemp = "0.0" & IIf(KeyCode <> 8, Chr(KeyCode), "0")
End If
txtValorCP.Text = Format(Val(zTemp), "R$ ###,##0.00")
KeyCode = 0
Else
If KeyCode <> 13 And KeyCode <> 9 And KeyCode <> 40 And KeyCode <> 38 Then KeyCode = 0
End If
End Sub
Pergunta
MColucci
Tenho uma TextBox para digitar valores em R$
Achei esse código na internet que funcionou muito bem para a função que eu queria, mas não está aceitando digitar números do NumPad, só aceita os números que ficam em cima das letras no teclado. Se eu incluo exceção para os códigos de teclas do NumPad ele buga e não funciona direito.
Como posso consertar isso?
Private Sub txtValorCP_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim zTemp As String txtValorCP.TextAlign = fmTextAlignRight If IsNumeric(Chr(KeyCode)) Or KeyCode = 8 Then If txtValorCP.Text <> "" Then zTemp = txtValorCP.Text & IIf(KeyCode <> 8, Chr(KeyCode), "") zTemp = Right(zTemp, Len(zTemp) - 2) zTemp = Replace(zTemp, ".", "") zTemp = Replace(zTemp, ",", "") If KeyCode = 8 Then If Len(zTemp) > 3 Then zTemp = Left(zTemp, Len(zTemp) - 1) Else zTemp = "0" & Left(zTemp, Len(zTemp) - 1) End If End If zTemp = Left(zTemp, Len(zTemp) - 2) & "." & Right(zTemp, 2) Else zTemp = "0.0" & IIf(KeyCode <> 8, Chr(KeyCode), "0") End If txtValorCP.Text = Format(Val(zTemp), "R$ ###,##0.00") KeyCode = 0 Else If KeyCode <> 13 And KeyCode <> 9 And KeyCode <> 40 And KeyCode <> 38 Then KeyCode = 0 End If End Sub
Editado por MColucciLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.