Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Somar textbox

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Zeca1456
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Seg Jul 30, 2018 4:18 pm

Somar textbox

Mensagem por Zeca1456 »

Você pode por favor me ajudar no seguinte:

Estou precisando de ajuda para fazer a soma das seguintes txtamount1+ txtamount2+ txtamount3+ txtamount4+ txtamount5+ txtamount6.
Os valores dessas txtamount são gerados automaticamente com o código abaixo.
Private Sub txtQty1_Change()
Dim q As Double
Dim t As Double
If IsNumeric(txtQty1.Value) Then
If txtQty1.Value <> "" Then q = txtQty1.Value
If txtPerUnitInv1.Value <> "" Then t = txtPerUnitInv1.Value
txtAmountInv1.Value = q * t
End If
If txtQty1.Value = "" Then
txtAmountInv1.Value = ""
End If
End Sub

Private Sub txtPerUnitInv1_Change()
Dim q As Double
Dim t As Double
If IsNumeric(txtPerUnitInv1.Value) Then
If txtPerUnitInv1.Value <> "" Then t = txtPerUnitInv1.Value
If txtQty1.Value <> "" Then q = txtQty1.Value
txtAmountInv1.Value = t * q
End If
If txtPerUnitInv1.Value = "" Then
txtAmountInv1.Value = ""
End If
txtPerUnitInv1.Value = Vba.Format(txtPerUnitInv1.Value, "Currency")
End Sub

A soma dessas 6 TextBox tem que preencher a txtSub-Total. Como o código abaixo:
Private Sub txtAmountInv6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
v6 = 0
If Not VBA.IsNumeric(txtAmountInv6.Value) Then
Cancel = True
Else
v6 = VBA.CDbl(txtAmountInv6.Value)
End If
End Sub
Private Sub CommandButton2_Click()
Me.txtSub_Total.Value = v1 + v2 + v3 + v4 + v5 + v6
txtSub_Total.Value = VBA.Format(txtSub_Total.Value, "Currency")
End Sub
Esses códigos estão preenchendo a fazendo os cálculos necessários. Acontece que tenho que apertar a tecla “ENTER” em cada uma das txtamount, mesmo com elas já preenchidas e logo clicar no “Botão de Comando” para realizar a soma.
Como posso realizar isso sem ter que apertar o botão “Enter”?
Além dessa TextBox
Tenho outras 4 txtAmoutoToPay os códigos são semelhantes.
Essa txtAmoutToPay tem que ser somadas entre si somar a txtSub_total.
O código também está pronto, porem com o mesmo problema em apertar a tecla “Enter”.
Soma de TextBox Complicada bravesa.png
Soma de TextBox Complicada bravesa.png (53.41 KiB) Exibido 2461 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Somar textbox

Mensagem por Reinaldo »

Veja se o tópico viewtopic.php?f=20&t=7593&p=29217&hilit=soma#p29217 lhe auxilia.
Caso não avance, disponibilize um modelo, que seja significativo de seu projeto; com dados fictícios se necessário.


Zeca1456
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Seg Jul 30, 2018 4:18 pm

Re: Somar textbox

Mensagem por Zeca1456 »

Criei esse Procedimento:
Public Sub SomaExpense()
Dim y As Double
y = 0
If Len(UserFormCustomer.txtAmountExpense1.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense1.Value
If Len(UserFormCustomer.txtAmountExpense2.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense2.Value
If Len(UserFormCustomer.txtAmountExpense3.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense3.Value
If Len(UserFormCustomer.txtAmountExpense4.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense4.Value
UserFormCustomer.txtTotal_Invoice = y
End Sub
Chamo esse Procedimento para cada um das 4 textoBoxs:
Private Sub txtAmountExpense1_Change()
Call SOMA.SomaExpense
End Sub
Private Sub txtAmountExpense2_Change()
Call SOMA.SomaExpense
End Sub
Private Sub txtAmountExpense3_Change()
Call SOMA.SomaExpense
End Sub
Private Sub txtAmountExpense4_Change()
Call SOMA.SomaExpense
End Sub
Elas fazem a soma e mostra o resultado txt_total_Invoice.
O que eu preciso é que a soma dessas 4 TextBox some mais a txt_SubTotal
E me mostre o valor na txt_total_Invoice
Txt_Total_Invoice= txt_SubTotal+ txtAmountExpense1+ txtAmountExpense2+ txtAmountExpense3+ txtAmountExpense4
O valor que preenche a txt_SubTotal vem de outro procedimento.


Zeca1456
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Seg Jul 30, 2018 4:18 pm

Re: Somar textbox

Mensagem por Zeca1456 »

Tentei fazer. Recebo a mensagem: Complite error: Can't find project or library
e highight o nome da minha extBox

muito obrigado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Somar textbox

Mensagem por Reinaldo »

Complicado somente por descritivo; mas experimente somar na sub montada

Código: Selecionar todos

Public Sub SomaExpense()
Dim y As Double
y = 0
If Len(UserFormCustomer.txtAmountExpense1.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense1.Value
If Len(UserFormCustomer.txtAmountExpense2.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense2.Value
If Len(UserFormCustomer.txtAmountExpense3.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense3.Value
If Len(UserFormCustomer.txtAmountExpense4.Value) > 0 Then y = y + UserFormCustomer.txtAmountExpense4.Value
UserFormCustomer.txtTotal_Invoice = y + cdbl(UserForCustomer.txt_SubTotal.value)
End Sub
Caso não avance, disponibilize um modelo........


Zeca1456
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Seg Jul 30, 2018 4:18 pm

Re: Somar textbox

Mensagem por Zeca1456 »

Obrigado Reinaldo.
Você quase deu a solução.
Depois de sua excelente dica que resolveu parte do problema.

Esta ocorrendo o seguinte:
Se o usuario entrar primeiro com os valores nas textBox cujo seus valores produz a soma na txtSub_Total. O cálculo é feito.

Exemplo: txtSub_Total=9
txtTotal_Invoice=txtAmountExpense1+txtAmountExpense2+txtAmountExpense3+txtAmountExpense4= 4
txtTotal_Invoice= 13

O que esta acontecendo (o PROBLEMA)
Depois de todas as txtbox forem preenchidas e o usuário tiver que fazer correção na digitação e mudar o valor em uma das textBox que produz a soma na txtSub_Total. O cálculo no é realizado.
Fica assim:
Exemplo 2: txtSub_Total=0
txtTotal_Invoice=txtAmountExpense1+txtAmountExpense2+txtAmountExpense3+txtAmountExpense4= 4
txtTotal_Invoice= 13

Se o usuário entrar com os valores primeiro nas txtAmountExpense1,txtAmountExpense2,txtAmountExpense3,txtAmountExpense4.
Recebo essa mensagem: Run-time error 13 - Type mismatch


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder