Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Yatagan Rocha

VBA EXCEL - Erro ao Calcular em Formulário

Recommended Posts

Olá pessoa, é o seguinte..

Fiz um formulário pra me ajudar com um Recordatório Alimentar (Coisa de Nutrição), ele me da o que eu quero nestas TextBox cinzas, basta eu preencher os outros itens, mas está acontecendo um problema quando por exemplo eu coloco "80" ou um numero em que a kcal cinza dê um número com um ponto "." que seria uma virgula no caso o resultado da PORÇÃO da errado, eu não sei se vocês vão entender, mas no exemplo eu coloco 80 e o valor da 18.4 a sendo que o valor certo seria 1,84 pois eu coloquei um codigo pra calcular as seguintes texbox:

TextBox1 (kcal cinza) dividindo TextBox3 (Porção cinza) ou seja 128,8/70 = 1,84 e não 18.4

 

Queria saber se é possível trocar esse ponto por virgula também, estou mandando uma imagem e o codigo do Formulário

 

Private Sub CommandButton2_Click()

'Calcular a kcal do Alimento
Dim valor1, valor2, valor3 As Double

If Me.txtg1 <> "" And Me.txtkcal <> "" And Me.txtg2 <> "" Then


valor1 = Me.txtg1 'Gramas do Alimento Cadastrado
valor2 = Me.txtkcal 'Kcal do Alimento Referência
valor3 = Me.txtg2 'Gramas do Alimento Referência


Me.TextBox1 = valor1 * valor2 / valor3

End If


'Calcular Porção do Alimento
Dim valor4, valor5 As Double

If Me.TextBox1 <> "" And Me.TextBox3 <> "" Then


valor4 = Me.TextBox1 'Kcal do Alimento Cadastrado
valor5 = Me.TextBox3 'Valor de 1 Porção

Me.TextBox2 = valor4 / valor5

End If
End Sub


Private Sub CommandButton1_Click()

'Cadastro
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("REC")

'acha a primeira linha do banco de dados
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
 SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

'verifica se o primeiro box esta preenchido
If Trim(Me.txtalimento.Value) = "" Then
 Me.txtalimento.SetFocus
 MsgBox "Favor inserir o nome do alimento e sua preparação"
 Exit Sub
End If

'copia dos dados para o banco de dados
'se as linhas estiverem bloqueadas para edicao, coloque o seu password onde esta escrito PASSWORD abaixo e retire as aspas que estão comentando o codigo (para que ele funcione)

With ws
 .Unprotect Password:=""
 .Cells(iRow, 1).Value = Me.refeicao.Value
 .Cells(iRow, 2).Value = Me.txthr.Value
 .Cells(iRow, 3).Value = Me.txtlocal.Value
 .Cells(iRow, 4).Value = Me.txtalimento.Value
 .Cells(iRow, 5).Value = Me.txtmedida.Value
 .Cells(iRow, 6).Value = Me.txtg1.Value
 .Cells(iRow, 7).Value = Me.grupo.Value
 .Cells(iRow, 8).Value = Me.TextBox1.Value
 .Cells(iRow, 9).Value = Me.TextBox2.Value
 .Cells(iRow, 10).Value = Me.txtg2.Value
 .Cells(iRow, 11).Value = Me.txtkcal.Value
 .Protect Password:=""
End With

'limpa os dados do formulario

Me.txtalimento.Value = ""
Me.txtmedida.Value = ""
Me.txtg1.Value = ""
Me.grupo.Value = ""
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.txtkcal.Value = ""
Me.refeicao.SetFocus

End Sub


Private Sub grupo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

 

Private Sub grupo_Change()

If grupo.Text = "CEREAIS, TÚBERCULOS, RAÍZES E DERIVADOS" Then
            TextBox3.Text = "150"
        End If
        If grupo.Text = "LEGUMINOSAS (FEIJÕES)" Then
            TextBox3.Text = "55"
        End If
        If grupo.Text = "FRUTAS E SUCOS DE FRUTAS NATURAIS" Then
            TextBox3.Text = "70"
        End If
        If grupo.Text = "LEGUMES E VERDURAS" Then
            TextBox3.Text = "15"
        End If
        If grupo.Text = "LEITE E DERIVADOS" Then
            TextBox3.Text = "120"
        End If
        If grupo.Text = "CARNES E OVOS" Then
            TextBox3.Text = "190"
        End If
        If grupo.Text = "ÓLEOS, GORDURAS E SEMENTES OLEAGINOSAS" Then
            TextBox3.Text = "73"
        End If
        If grupo.Text = "AÇÚCARES E DOCES" Then
            TextBox3.Text = "110"
        End If
        
End Sub


Private Sub refeicao_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

Private Sub txtalimento_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub


Private Sub txtlocal_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

Private Sub txtmedida_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

Sem título.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×