Suma de variables con problemas

15/03/2005 - 02:11 por Javi | Informe spam
Hola

He creado un formulario y tiene varios TextBox, el problema es que hay
tres que uqiero sumar sus valores, pero cuando escribo en dos de ellos
(siempre los mismos) se concatennan los valores, pero si escribo en las
otras dos combinaciones se suma bien


El código para los tres textbox es el mismo

Private Sub TextBoxPTransp_Change()
If TextBoxPPrecio.Value = "" Then
pprecio = 0
Else
pprecio = TextBoxPPrecio.Value
End If
If TextBoxPTransp.Value = "" Then
ptransp = 0
Else
ptransp = TextBoxPTransp.Value
End If
If TextBoxPMont.Value = "" Then
pmont = 0
Else
pmont = TextBoxPMont.Value
End If
precio = pprecio + ptransp + pmont
TextBoxPrecio.Value = precio
End Sub

Private Sub TextBoxPPrecio_Change()
...
End Sub

Private Sub TextBoxPMont_Change()
...
End Sub

Las variables están definidas para el formulario.

Dim dcto, uds, precio
Dim pmont, ptransp, pprecio

Si escribo en TextBoxPPrecio y TextBoxPTransp CONCATENA LOS VALORES,
pero si escribo en TextBoxPPrecio y TextBoxPMont, o en TextBoxPTransp y
TextBoxPMont SUMA BIEN LOS VALORES.

¿Alguna idea de dónde he metido la pata?

Muchas gracias

Javi
 

Leer las respuestas

#1 Héctor Miguel
15/03/2005 - 09:08 | Informe spam
hola, Javi !

... formulario... varios TextBox, el problema es... sumar sus valores
... cuando escribo en dos de ellos... se concatennan los valores
... si escribo en las otras dos combinaciones se suma bien [...]



probablemente sea una combinacion de factores [p.e.]
-> las variables las declaras SIN un tipo 'especifico'
[se asumen 'Variant' por omision y se van 'ajustando' segun se modifican]
-> los controles 'TextBoxes' SON ->controles de texto<- [por omision]
sus propiedades 'Value' y 'Text' son [en principio] 'eqivalentes' [por lo tanto]
-> al asignar sus 'valores' [o textos] a las variables ['Variant' por omision]
estas 'sumando textos' [concatenando]
[probablemente, hasta que excel 'se da cuenta' de que se trata de 'valores numericos'] -?-
-> dicho sea 'de paso'... tienes mas lineas de codigo de las 'minimas indispensables' :))
-> prueba modificando los codigos de todos los textboxes a lo siguiente:
Private Sub TextBoxPTransp_Change()
pprecio = Val(TextBoxPPrecio)
ptransp = Val(TextBoxPTransp)
pmont = Val(TextBoxPMont)
precio = pprecio + ptransp + pmont
TextBoxPrecio = precio
End Sub
Private Sub TextBoxPMont_Change()
' igual al anterior '
End Sub
Private Sub TextBoxPPrecio_Change()
' igual al anterior '
End Sub

si cualquier duda... comentas?
saludos,
hector.

Preguntas similares