Basole
Geek
Registrado
945 Mensagens
596 Curtidas
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. Dê retorno por favor. Se resolveu, Altere o Titulo como [ Resolvido ]
MJN
Membro Junior
Registrado
75 Mensagens
8 Curtidas
Muito obrigado pela atenção, eu vou fazer um teste.
MJN
Membro Junior
Registrado
75 Mensagens
8 Curtidas
Muito obrigado Basole, resolveu o meu problema