numero decimal en formulario

05/04/2005 - 23:27 por fredy | Informe spam
hola grupo, tengo un problema: resulta que tengo un formulario el cual toma
datos desde excel el problema es que tengo por ejemplo en la celda a1 25.8
cuado lo subo al formulario queda 25,8 luego como es un formulario de edicion
cuando este 25,8 entra a la celda a1 de nuevo ya no es un numero que puedo
hacer; para subir el nuemro al formulario utilizo:
val1=sheets("hoja1").cells(1,1)

muchas gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
05/04/2005 - 23:54 | Informe spam
hola [de nuevo], fredy !

... un formulario... toma datos... por ejemplo en la celda a1 25.8... cuado lo subo al formulario queda 25,8
... como es un formulario de edicion cuando este 25,8 entra a la celda a1 de nuevo ya no es un numero
... para subir el numero al formulario utilizo: val1=sheets("hoja1").cells(1,1)



espero que lo siguiente te sea de utilidad ;)
saludos,
hector.

1.- es un comportamiento 'normal' [???] del textbox [cuando esta 'ligado' a una celda]
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']
[dicho sea 'de paso'] tambien 'le desaparece' el formato a la celda y 'le aplica' uno 'numerico' con 0 decimales :(
3.- [al parecer] es un 'bug-no-atendido', que 'se presenta' [solo] 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 casos de 'valores' ligados a celdas] 'pareciera asumir' que toda version 'non-us-centric' usa la coma en las decimales :\
-> viene 'presentandose' desde la version '97 hasta la version 2003 <-
4.- haciendo algunas pruebas ... lo siguiente 'funciona de maravilla'...
-> QUITA el vinculo de/a la celda para que no 'tome de ahi' algun valor [separando las decimales por comas] y...
en el modulo de codigo del formulario ==Private Sub TextBox1_Change()
Range("a1") = Val(Me.TextBox1)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range("a1").NumberFormat = "0.0000"
End Sub
-> solo 'toma en cuenta' que la funcion Val() [vba] SOLO 'acepta' EL PUNTO como 'separador de decimales' <-
Respuesta Responder a este mensaje
#2 fredy
06/04/2005 - 00:59 | Informe spam
si esto funciona perfecto y sirve para cuando alimento la base, pero una
pregunta cuando quiero hacer un formulario de consulta y edicion y tengo que
llamar estos valores decimales y ponerlos en un textbox como puedo hacer para
que los siga reconociendo como decimales?

gracias Hector

"Héctor Miguel" escribió:

hola [de nuevo], fredy !

> ... un formulario... toma datos... por ejemplo en la celda a1 25.8... cuado lo subo al formulario queda 25,8
> ... como es un formulario de edicion cuando este 25,8 entra a la celda a1 de nuevo ya no es un numero
> ... para subir el numero al formulario utilizo: val1=sheets("hoja1").cells(1,1)

espero que lo siguiente te sea de utilidad ;)
saludos,
hector.

1.- es un comportamiento 'normal' [???] del textbox [cuando esta 'ligado' a una celda]
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']
[dicho sea 'de paso'] tambien 'le desaparece' el formato a la celda y 'le aplica' uno 'numerico' con 0 decimales :(
3.- [al parecer] es un 'bug-no-atendido', que 'se presenta' [solo] 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 casos de 'valores' ligados a celdas] 'pareciera asumir' que toda version 'non-us-centric' usa la coma en las decimales :\
-> viene 'presentandose' desde la version '97 hasta la version 2003 <-
4.- haciendo algunas pruebas ... lo siguiente 'funciona de maravilla'...
-> QUITA el vinculo de/a la celda para que no 'tome de ahi' algun valor [separando las decimales por comas] y...
en el modulo de codigo del formulario ==> Private Sub TextBox1_Change()
Range("a1") = Val(Me.TextBox1)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range("a1").NumberFormat = "0.0000"
End Sub
-> solo 'toma en cuenta' que la funcion Val() [vba] SOLO 'acepta' EL PUNTO como 'separador de decimales' <-



Respuesta Responder a este mensaje
#3 fredy
06/04/2005 - 01:03 | Informe spam
Hector... con un simple

Private Sub UserForm_Initialize()
TextBox1 = Range("a1")
End Sub

funcionaría bien?

"Héctor Miguel" escribió:

hola [de nuevo], fredy !

> ... un formulario... toma datos... por ejemplo en la celda a1 25.8... cuado lo subo al formulario queda 25,8
> ... como es un formulario de edicion cuando este 25,8 entra a la celda a1 de nuevo ya no es un numero
> ... para subir el numero al formulario utilizo: val1=sheets("hoja1").cells(1,1)

espero que lo siguiente te sea de utilidad ;)
saludos,
hector.

1.- es un comportamiento 'normal' [???] del textbox [cuando esta 'ligado' a una celda]
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']
[dicho sea 'de paso'] tambien 'le desaparece' el formato a la celda y 'le aplica' uno 'numerico' con 0 decimales :(
3.- [al parecer] es un 'bug-no-atendido', que 'se presenta' [solo] 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 casos de 'valores' ligados a celdas] 'pareciera asumir' que toda version 'non-us-centric' usa la coma en las decimales :\
-> viene 'presentandose' desde la version '97 hasta la version 2003 <-
4.- haciendo algunas pruebas ... lo siguiente 'funciona de maravilla'...
-> QUITA el vinculo de/a la celda para que no 'tome de ahi' algun valor [separando las decimales por comas] y...
en el modulo de codigo del formulario ==> Private Sub TextBox1_Change()
Range("a1") = Val(Me.TextBox1)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range("a1").NumberFormat = "0.0000"
End Sub
-> solo 'toma en cuenta' que la funcion Val() [vba] SOLO 'acepta' EL PUNTO como 'separador de decimales' <-



Respuesta Responder a este mensaje
#4 fredy
06/04/2005 - 01:23 | Informe spam
que es una version 'non-us-centric'

"Héctor Miguel" escribió:

hola [de nuevo], fredy !

> ... un formulario... toma datos... por ejemplo en la celda a1 25.8... cuado lo subo al formulario queda 25,8
> ... como es un formulario de edicion cuando este 25,8 entra a la celda a1 de nuevo ya no es un numero
> ... para subir el numero al formulario utilizo: val1=sheets("hoja1").cells(1,1)

espero que lo siguiente te sea de utilidad ;)
saludos,
hector.

1.- es un comportamiento 'normal' [???] del textbox [cuando esta 'ligado' a una celda]
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']
[dicho sea 'de paso'] tambien 'le desaparece' el formato a la celda y 'le aplica' uno 'numerico' con 0 decimales :(
3.- [al parecer] es un 'bug-no-atendido', que 'se presenta' [solo] 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 casos de 'valores' ligados a celdas] 'pareciera asumir' que toda version 'non-us-centric' usa la coma en las decimales :\
-> viene 'presentandose' desde la version '97 hasta la version 2003 <-
4.- haciendo algunas pruebas ... lo siguiente 'funciona de maravilla'...
-> QUITA el vinculo de/a la celda para que no 'tome de ahi' algun valor [separando las decimales por comas] y...
en el modulo de codigo del formulario ==> Private Sub TextBox1_Change()
Range("a1") = Val(Me.TextBox1)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range("a1").NumberFormat = "0.0000"
End Sub
-> solo 'toma en cuenta' que la funcion Val() [vba] SOLO 'acepta' EL PUNTO como 'separador de decimales' <-



Respuesta Responder a este mensaje
#5 Héctor Miguel
06/04/2005 - 08:56 | Informe spam
hola, fredy !

que es una version 'non-us-centric'

... con un simple
Private Sub UserForm_Initialize()
TextBox1 = Range("a1")
End Sub
funcionaria bien?



'por partes'... ->non<- 'significa' [precisamente] que NO 'aplica'... y
... 'us-centric' es una 'alegoria' a sistemas 'basados' en 'estandares' aplicables en los EE.UU.AA
p.e. formato horario = mm/dd/aa
separador de decimales = PUNTO
separador para miles, argumentos, listas = COMA [etc.]

como supongo que necesitaras 'cierta flexibilidad' para mostrar/asignar valores entre celda y textbox...
prueba copiando los siguientes codigos [y adaptalos segun la situacion 'real']
en el modulo de codigo del formulario ==Private Sub UserForm_Initialize()
TextBox1 = Format([a1], "$ #,##0.00") '"Currency") '"Percent")
End Sub
Private Sub TextBox1_Enter()
TextBox1 = Format([a1], "0.00")
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
[a1] = Val(TextBox1)
TextBox1 = Format([a1], "$ #,##0.00")
End Sub

toma nota de que tendrias que 'asegurarte' [al menos] de las siguientes dos 'condicionantes'...
1.- el textbox NO tiene asignado el primer 'orden de tabulacion' [0] en el formulario
2.- SIEMPRE tendria que producirse/dispararse el evento '_exit' del textbox
[o encontrar una forma alterna de que se 'produzca' el resultado del evento] <= OJO

si cualquier duda... comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida