Logo Hardware.com.br
Responder
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#2 Por Basole
22/03/2018 - 13:24
O campo textbox3, como irá mostrar o resultado do calculo, deve ficar bloqueado para inserir ou alterar os valores
Então ao iniciar o form a propriedade loked = true
Vejas se é isso

[code=vb]
Private Sub UserForm_Initialize()
TextBox3.Locked = True
End Sub

Sub Seu_Botao_Calcular()
Dim vlrPorc As Single
If Not Me.TextBox1.Text = "" Or Me.TextBox2.Text = "" Then
vlrPorc = VBA.CSng(VBA.Replace(TextBox2.Value, "%", "")) / 100
TextBox3.Value = VBA.Format(TextBox1.Value * vlrPorc, "currency")
Else
MsgBox "Insira todos os valores!!", 16, """"
End If
End Sub

Sub Seu_Botao_LImpar()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub

Private Sub TextBox1_Change()
vlr = TextBox1.Value
If VBA.IsNumeric(vlr) Then
If VBA.InStr(1, vlr, "-") >= 1 Then vlr = VBA.Replace(vlr, "-", "")
If VBA.InStr(1, vlr, ",") >= 1 Then vlr = VBA.CDbl(Replace(vlr, ",", ""))
If VBA.InStr(1, vlr, ".") >= 1 Then vlr = VBA.Replace(vlr, ".", "")
Select Case VBA.Len(vlr)
Case 1
numPonto = "00" & vlr
Case 2
numPonto = "0" & vlr
Case 6 To 8
numPonto = Left(vlr, Len(vlr) - 5) & "." & Right(vlr, 5)
Case 9 To 11
numPonto = InseriPonto(8, vlr)
Case 12 To 14
numPonto = InseriPonto(11, vlr)
Case Else
numPonto = vlr
End Select
numVirgula = VBA.Left(numPonto, VBA.Len(numPonto) - 2) & "," & VBA.Right(numPonto, 2)
TextBox1.Value = VBA.Format$(numVirgula, "currency")
Else
If vlr = "" Then Exit Sub
MsgBox "Número invalido", vbCritical, "Caracter Invalido"
TextBox1.Value = ""
Exit Sub
End If
End Sub

Function InseriPonto(Inicio, vlr)
I = VBA.Left(vlr, Len(vlr) - Inicio)
M1 = VBA.Left(Right(vlr, Inicio), 3)
M2 = VBA.Left(Right(vlr, 8), 3)
F = VBA.Right(vlr, 5)
If (M2 = M1) And (VBA.Len(vlr) < 12) Then
InseriPonto = I & "." & M1 & "." & F
Else
InseriPonto = I & "." & M1 & "." & M2 & "." & F
End If
End Function

Private Sub TextBox2_AfterUpdate()
TextBox2.Value = VBA.Format(VBA.Replace(TextBox2.Value, "%", "") / 100, "percent")
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii >= 48 And KeyAscii <= 57 Then
Else
KeyAscii = 0
End If
End Sub

[/code]
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal