Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Somar textbox
Somar textbox
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”.
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”.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Somar textbox
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.
Caso não avance, disponibilize um modelo, que seja significativo de seu projeto; com dados fictícios se necessário.
Re: Somar textbox
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.
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.
Re: Somar textbox
Tentei fazer. Recebo a mensagem: Complite error: Can't find project or library
e highight o nome da minha extBox
muito obrigado
e highight o nome da minha extBox
muito obrigado
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Somar textbox
Complicado somente por descritivo; mas experimente somar na sub montada
Caso não avance, disponibilize um modelo........
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
Re: Somar textbox
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
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