Sumar Textbox en formulario

15/02/2007 - 20:42 por Brel | Informe spam
Hola grupo, hacía tiempo que no pasaba por aquí.
Mi problema es que el formato de ambos textbox es texto y necesito sumar sus
valores con formato 0.000 (se teclean con el teclado numérico y en pantalla
aparece:0,000). Al tener decimales no me vale 'Val', al ser texto CSng da
error 13(No coinciden los tipos)... será una tontería pero toy atascao...
Mil gracias por adelantado.
Brel

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
16/02/2007 - 05:54 | Informe spam
hola, Ivan !

... en lo que se refire a dar la vuelta a los cambios (coma por puntos)... supongo que estos (los puntos) vba no los reconoceria.
Al reves, puntos por comas como en el ej. si parece funcionar, aunque... si pudiera surgir algun problema con el replace
(ademas de la posible introduccion de mas de un punto [...]



prueba: un formulario con dos textboxes [uno 'ligado' a alguna celda y otro 'libre'] mas un commandbutton [para los mensajes]
la celda vinculada al textbox1 contiene 123.45
en el textbox2 se introduce la misma 'figura/cantidad' de 123.45 [nota: el separador decimal usando el punto del teclado numerico]

dado que vba es us-centric, los miles se separan por coma y las decimales por punto en funciones como Format(... etc.
por lo que el codigo para el commandbutton1 permanece sin modificaciones :))
Private Sub CommandButton1_Click()
MsgBox "Ligado: " & Format(TextBox1, "#,##0.00") & vbCr & _
"Origen: " & Format(Range(TextBox1.ControlSource), "#,##0.00") & vbCr & _
"Libre : " & Format(TextBox2, "#,##0.00")
End Sub

op1: configuracion americana [la mia por omision :))] -> separddores: decimales/pnto, miles/coma, listas/coma
a) la celda se muestra como: 123.45 [al igual que el textbox2 cuando se introducen los datos]
b) el textbox1 [ligado] muestra 123,45
c) el cuadro de mensajes devuelve:
Ligado: 12,345.00
Origen: 123.45
Libre : 123.45

op2: cambiando a configuracion europea -> separadores: decimales/coma, miles/punto, listas/punto_y_coma
a) la celda se muestra como: 123,45 [diferente al textbox2 cuando se introducen los datos... -> 123.45]
b) el textbox1 [ligado] muestra 123,45 [no hay cambios en el textbox 'ligado']
c) el cuadro de mensajes devuelve:
Ligado: 123,45
Origen: 123,45
Libre : 12.345,00

op3: todavia usando la configuracion europea, pero... usando la coma [teclado alfanumerico] al llenar el textbox2...
a) la celda se muestra como: 123,45 [al igual que el textbox2 cuando se introducen por teclado alfanumerico -> 123,45]
b) el textbox1 [ligado] muestra 123,45 [no hay cambios en el textbox 'ligado']
c) el cuadro de mensajes devuelve:
Ligado: 123,45
Origen: 123,45
Libre : 123,45

los demas 'comportamientos' posibles [modificar el textbox ligado y/o la celda vinculada en tiempo de ejecucion]...
siguien siendo 'bizarros' [segun los comentarios del mensaje anterior] :))

o sea que... este tema... da para mucho mas todavia :))
saludos,
hector.
Respuesta Responder a este mensaje
#7 Ivan
16/02/2007 - 19:19 | Informe spam
hola Hector Miguel, muchas gracias por el ejemplo y las aclaraciones

los demas 'comportamientos' posibles [modificar el textbox ligado y/o la
celda vinculada en tiempo de ejecucion]...
siguien siendo 'bizarros' [segun los comentarios del mensaje anterior]
:))

o sea que... este tema... da para mucho mas todavia :))



y tanto, yo, con este tema, llevo sin conseguir aclararme del todo desde el
inicio de mis tiempos VBAianos, pero poquito a poco, y gracias sobre todo a
tus pertinentes aclaraciones, las dudas cada vez se hacen mas tenues.

En cualquier caso parece (al menos en mis pruebas) que para la configuracion
europea, si podria hacerse el apaño para el caso de la suma con Replace o
similar, aunque, evidentemente, habria que controlar la posibilidad de
diversos errores.

y ya, sobre todo por si tu ves algun problema extra y por si quiere echar un
vistazo Brel pongo esta variante de tu ej. para el caso de la suma:, tambien
com dos textbox y un commandbutton (para la configuracion europea)->

Private Sub CommandButton1_Click()
MsgBox "Suma sin Replace => " & Format(CSng(TextBox1) + _
CSng(TextBox2), "#,##0.000") & vbCr & vbCr & _
"Suma con Replace => " & Format(CSng(Replace(TextBox1, ".", ",")) +
_
CSng(Replace(TextBox2, ".", ",")), "#,##0.000")
End Sub

gracias de nuevo, y un saludo y hasta pronto
Ivan

PD: con las dichosas almohadillas de los formatos me pasa como con el resto
del tema, que nunca acabo de recordar como ponerlas.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida