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

#1 Ivan
16/02/2007 - 01:20 | Informe spam
hola Brel

no se si iran por aqui los tiros, pero he hecho esta prueba y me funciona
bien. Dependiendo de tu configuracion regional quizas debas, en vez de
cambiar el punto (.) por la coma (,) , hacerlo al reves( coma por punto).

Private Sub CommandButton1_Click()
Label1.Caption = _
Format(CSng(Replace(TextBox1, ".", ",")) + _
CSng(Replace(TextBox2, ".", ",")), "#.###")
End Sub

En cuanto CSng, y al menos en mi caso, no tiene problemas en cambiar de un
string (textbox) a un single.

Lo que si es cierto que omitiendo el 'Replace' lo que me sumaba era los
numeros como si no tuvieran coma (ni punto), o sea pej. 10.00 + 10.00 00
en lugar de 20,00

en cuanto al formato, y para mi configuracion regional (coma -> decimales y
punto -> miles ) en la forma de el codigo me devuelve la cantidad sumada con
3 decimales y con coma separadora, en el label1 del ejemplo.

bueno, no se si te ayuda o te lia mas, pero espero que sea lo 1º

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#2 Ivan
16/02/2007 - 01:31 | Informe spam
hola de nuevo

tambien puedes añadir esto (en el evento KeyAscii de los textbox

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub
esto te cambiaria el punto por la coma al teclearla, si lo que quieres es
lo contrario (disculpame pero no me ha quedado claro) solo tendrias que
ponerlo al reves ->

If KeyAscii = 44 Then KeyAscii = 46

un saludo
Ivan

"Ivan" escribió en el mensaje
news:
hola Brel

no se si iran por aqui los tiros, pero he hecho esta prueba y me funciona
bien. Dependiendo de tu configuracion regional quizas debas, en vez de
cambiar el punto (.) por la coma (,) , hacerlo al reves( coma por punto).

Private Sub CommandButton1_Click()
Label1.Caption = _
Format(CSng(Replace(TextBox1, ".", ",")) + _
CSng(Replace(TextBox2, ".", ",")), "#.###")
End Sub

En cuanto CSng, y al menos en mi caso, no tiene problemas en cambiar de un
string (textbox) a un single.

Lo que si es cierto que omitiendo el 'Replace' lo que me sumaba era los
numeros como si no tuvieran coma (ni punto), o sea pej. 10.00 + 10.00
00 en lugar de 20,00

en cuanto al formato, y para mi configuracion regional (coma -> decimales
y punto -> miles ) en la forma de el codigo me devuelve la cantidad sumada
con 3 decimales y con coma separadora, en el label1 del ejemplo.

bueno, no se si te ayuda o te lia mas, pero espero que sea lo 1º

un saludo y hasta pronto
Ivan

Respuesta Responder a este mensaje
#3 Héctor Miguel
16/02/2007 - 02:10 | Informe spam
hola, Brel !

... 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)... toy atascao...



estoy suponiendo que en tu configuracion regional el separador decimal es el punto -?-
y que los textboxes los tienes 'ligados/vinculados/...' a celdas en hoja de calculo -?-
[entonces]... espero que algo de lo siguiente 'apunte' en la direccion 'correcta'

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) es un comportamiento 'normal' [???] del textbox =>cuando esta 'ligado' a una celda< es este el caso ?, porque ademas, como VBA es US-Centric, las funciones como Val(), Format() y similares...
-> no aceptan la coma como separador 'valido' para las decimales :D sin embargo...

2) un textbox ['ligado'] NO 'acepta' el punto como un 'caracter valido' para sus propiedades .Value/.Text
aun si lo introduces en 'esos campos' en la ventana de propiedades [en 'tiempo de dise#o']
y... dicho sea 'de paso'... OJO... porque tambien
-> 'le desaparece' el formato a la celda donde esta vinculado el textbox y 'le aplica' uno 'numerico' con 0 decimales :(

3) [al parecer] es un 'bug-no-atendido', que SOLO 'se presenta' en las versiones 'non-us-centric' de excel
a pesar de que [el uso 'entendido' de] un textbox 'toma' [preferentemente] TEXTOS y 'debiera aceptar' CUALQUIER caracter,
[en el caso de 'valores' ligados a una celda] 'pareciera asumir' que toda version 'non-us-centric' usa la coma en las decimales :\
=>viene 'presentandose' desde la version '97 hasta la version 2003<=
Respuesta Responder a este mensaje
#4 Ivan
16/02/2007 - 03:39 | Informe spam
hola Hector Miguel, permiteme una consulta al respecto

2) un textbox ['ligado'] NO 'acepta' el punto como un 'caracter valido'
para sus propiedades .Value/.Text
aun si lo introduces en 'esos campos' en la ventana de propiedades [en
'tiempo de dise#o']



¿y en caso de no estar ligado si lo acepta?

te lo comento porque en mis pruebas para esta consulta, con textbox 'no
ligados' tambien parece ignorarlos (los puntos) por completo. No se ha
producido ningun error pero me sumaba los numeros completos ( ej: 1.31 + 1.3
= 144 ).

en cualquier caso tu respuesta parece aclarar el 'misterio' Gracias por mi
parte en cualquier caso

un saludo
Ivan
Respuesta Responder a este mensaje
#5 Ivan
16/02/2007 - 03:58 | Informe spam
hola de nuevo, soy un 'pesao', esto es mas bien para no liar a Brel con mi
ayuda

los comentarios de Hector Miguel (creo) que echan por tierra mi propuesta en
lo que se refire a dar la vuelta a los cambios ( coma por puntos ), pues
supongo que estos (los puntos) vba no los reconoceria.

Al reves, puntos por comas como en el ej. si parece funcionar, aunque
quizas, Hector, nos puedas decir si pudiera surgir algun problema con el
replace (ademas de la posible introduccion de mas de un punto, sobre todo en
lo que se refiere al evento KeyPress (por cierto, antes me equivoque una vez
mas y puse 'evento Keyascii' ))

bueno, creo que el tema ya esta en las mejores manos. Espero no haberte
liado, Brel, y me retiro atento a tus siguientes comentarios, Hector, para
intentar seguir aprendiendo un poco mas a costa de tu generosidad.

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida