Formato de fecha

08/10/2006 - 00:25 por Jesús Díaz | Informe spam
Hola. Necesito saber como introducir una fecha con formato "dd/mm/aaaa" en una celda mediante un formulario y que solo acepte este tipo de entrada. Gracias por adelantado

Preguntas similare

Leer las respuestas

#6 Jesús Díaz
08/10/2006 - 03:24 | Informe spam
Hola. Mira, esta parte no la entiendo:

Private Sub CommandButton1_Click()
[a1] = Left(TextBox1, Len(TextBox1) - 1) / 100
End Sub

La primera parte:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1 / 100, "0.00%")
End Sub

es lo que hago, pero entonces en la celda no me almacena la parte decimal, tan solo la entera.

"Héctor Miguel" escribió en el mensaje news:
hola, Jesús !

... aprovecho para preguntar algo parecido: quiero introducir numeros que representen porcentajes mediante un control
(por ejemplo, si tecleo 9,5 quiero que equivalga a 9,50 %) y que en el mismo control se muestre como porcentaje.
Hasta ahora lo he hecho con un textbox y el valor si lo almacena como porcentaje (la celda receptora ya estaba así formateada)
pero no me lo muestra como porcentaje en el textbox.



1) es probable que te encuentres con algunos 'imponderables' entre simbolos separadores decimales/miles [configuracion regional] -?-
2) considera que VBA es 'US-Centric' y acepta -solo- el punto como separador decimal :(
3) suponiendo que el 'pase' del textbox a la celda 'formteada' es en otro evento... [p.e. desde un CommandButton1] -?-
prueba con las siguientes instrucciones [en el modulo de codigo del formulario]...

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1 / 100, "0.00%")
End Sub
Private Sub CommandButton1_Click()
[a1] = Left(TextBox1, Len(TextBox1) - 1) / 100
End Sub

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


Respuesta Responder a este mensaje
#7 Héctor Miguel
08/10/2006 - 03:26 | Informe spam
hola, Jesús !

... esta parte no la entiendo:


Private Sub CommandButton1_Click()
[a1] = Left(TextBox1, Len(TextBox1) - 1) / 100
End Sub

La primera parte:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1 / 100, "0.00%")
End Sub
es lo que hago, pero entonces en la celda no me almacena la parte decimal, tan solo la entera.



1) la parte que no entiendes, es una 'suposicion' [mia] ya que yo tampoco se 'como haces el pase' a la celda 'receptora' -?-

2) en relacion con la otra parte [la primera] que si haces, pero que la celda no 'considera' la parte decimal...
[probablemente]... tienes 'vinculado' el textbox con la celda 'receptora' [quizas con la propiedad '.ControlSource'] -?-

[tratando de 'resumir']...
- cual es la celda 'receptora' ?
- como es que 'recibe' [o le pasas] el dato del textbox ?

[te recuerdo que]... VBA es 'US-Centric'... los miles se separan por coma y las decimales se separan por punto
[ademas]... existe una serie de 'imponderables' con el 'manejo' de numeros/fracciones/fechas/... por VBA desde 'TextBoxes'

comentas algun detalle mas... significativo' ?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Jesús Díaz
08/10/2006 - 03:53 | Informe spam
Hola Héctor. No se interpretar esto: [a1] = Left(TextBox1, Len(TextBox1) - 1) / 100, en particular el [a1]
Para lo otro te pongo el código:

Private Sub Textbox1_Change()
Worksheets("Hoja").Range("C11").Select
ActiveCell = Textbox1 / 100
ActiveCell = Format(ActiveCell, "0.00%")
End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Subida = Format(Textbox1 / 100, "0.00%")
End Sub

Saludos. No se si eres de España, aquí son casi las 4 de la madrugada. Mañana continuaré, ahora ya no puedo más. Gracias por todo.

"Héctor Miguel" escribió en el mensaje news:
hola, Jesús !

... esta parte no la entiendo:


Private Sub CommandButton1_Click()
[a1] = Left(TextBox1, Len(TextBox1) - 1) / 100
End Sub

La primera parte:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1 / 100, "0.00%")
End Sub
es lo que hago, pero entonces en la celda no me almacena la parte decimal, tan solo la entera.



1) la parte que no entiendes, es una 'suposicion' [mia] ya que yo tampoco se 'como haces el pase' a la celda 'receptora' -?-

2) en relacion con la otra parte [la primera] que si haces, pero que la celda no 'considera' la parte decimal...
[probablemente]... tienes 'vinculado' el textbox con la celda 'receptora' [quizas con la propiedad '.ControlSource'] -?-

[tratando de 'resumir']...
- cual es la celda 'receptora' ?
- como es que 'recibe' [o le pasas] el dato del textbox ?

[te recuerdo que]... VBA es 'US-Centric'... los miles se separan por coma y las decimales se separan por punto
[ademas]... existe una serie de 'imponderables' con el 'manejo' de numeros/fracciones/fechas/... por VBA desde 'TextBoxes'

comentas algun detalle mas... significativo' ?
saludos,
hector.


Respuesta Responder a este mensaje
#9 Héctor Miguel
08/10/2006 - 04:40 | Informe spam
hola, Jesús !

... No se interpretar esto: [a1] = Left(TextBox1, Len(TextBox1) - 1) / 100, en particular el [a1]



1) la expresion [a1] es una notacion 'abreviada' y el 'equivalente' a decir -> Range("a1") [de la hoja 'activa']
[y es la celda/hoja que -yo- suponia donde se depositaba el contenido del textbox] :))

2) para [tratar de] 'explicarte' la expresion a la derecha del signo '=' [hare un breve 'resumen' de los datos 'iniciales']...

a) en tu segunda consulta comentas que requieres que el textbox 'refleje' la cantidad introducida como porcentaje
por ello mi sugerencia de 'darle formato' con el evento '_exit' del control textbox [solo ten presente lo de puntos y comas] :D
b) suponiendo que en el TextBox1 introduces 9,50
el codigo del evento lo 'convierte' en... -> 9,50% [toma nota que dicho 'valor' ES un dato-texto]
c) comentado ya que VBA es 'US-Centric' [ya sabes... miles separados por coma y decimales separados por punto] :-((
c.1) si utilizaras como 'convertidor' la funcion: -> Val(TextBox1) estaria 'leyendose' como: -> Val("9,50%")
c.2) al 'llegar' a la coma... VBA 'detiene' su lectura 'numerica' :\... por lo que obtendrias como 'valor' [solo]: -> 9 [ya vamos ?]
d) para 'evitar' esa 'forma de lectura' [de numeros-comas] por VBA... mi 'sugerencia' es depositar directo en la celda SIN el signo '%'
-> Left(TextBox1, Len(TextBox1) - 1) lo que 'regresaria' el texto 'convertido' de: -> 9,50% a: -> 9,50
y despues dividirlo por 100

3) para el caso del codigo que expones...
a) no se aprecia cual es la 'relacion' entre la celda donde depositas el contenido del textbox y la variable: -> 'Subida' -???-
b) el evento '_change' del textbox se 'dispara' -> por cada caracter introducido en el control... [te sugiero el evento '_exit'] -?-

por 'lo demas'... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

p.d. desde Mexico ;)

__ los codigos expuestos __
Para lo otro te pongo el codigo: [...]
Private Sub Textbox1_Change()
Worksheets("Hoja").Range("C11").Select
ActiveCell = Textbox1 / 100
ActiveCell = Format(ActiveCell, "0.00%")
End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Subida = Format(Textbox1 / 100, "0.00%")
End Sub

... No se si eres de Espa#a, aqui son casi las 4 de la madrugada. Ma#ana continuare [...]
Respuesta Responder a este mensaje
#10 Jesús Díaz
08/10/2006 - 12:58 | Informe spam
Hola Héctor. Ya he entendido algo, pero lo pruebo tal como lo dices y no funciona. Ocurre que si escribo "9.8" con el teclado numérico aparece "98%" como valor en la celda y como texto en el textbox. Y si escribo "9,8" con el teclado normal entonces aparece "9,00%" como valor en la celda y "9,8%" como texto en el textbox.
Lo que yo quiero es que tanto si se escribe usando el teclado numérico ("." para los decimales) como el normal ("," para los decimales) se almacene y se muestre el valor correcto decimal. De momento lo solvento con:

Private Sub Textbox1_Change()
Worksheets("Hoja").Range("C11").Select
ActiveCell = Textbox1 / 100
ActiveCell = Format(ActiveCell, "0.00%")
End Sub

y sin poner:

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Textbox1(*) = Format(Textbox1 / 100, "0.00%")
End Sub

(*) En el mensaje anterior puse aquí "Subida" que es el nombre verdadero que yo tengo para el textbox, lo que pasa es que para explicarlo mejor lo sustituí por "Textbox1" en todas las instancias, salvo en esa, que se me pasó.
Con ese código consigo que al usar el teclado numérico se almacene el valor que tecleo (por ejemplo tecleo "7.5" con numérico y se almacena en la celda "7,5%"), aunque en el textbox me muestra "7.5" Después pongo una etiqueta con "%". No es lo más elegante, pero de momento no veo otra.


"Héctor Miguel" escribió en el mensaje news:
hola, Jesús !

... No se interpretar esto: [a1] = Left(TextBox1, Len(TextBox1) - 1) / 100, en particular el [a1]



1) la expresion [a1] es una notacion 'abreviada' y el 'equivalente' a decir -> Range("a1") [de la hoja 'activa']
[y es la celda/hoja que -yo- suponia donde se depositaba el contenido del textbox] :))

2) para [tratar de] 'explicarte' la expresion a la derecha del signo '=' [hare un breve 'resumen' de los datos 'iniciales']...

a) en tu segunda consulta comentas que requieres que el textbox 'refleje' la cantidad introducida como porcentaje
por ello mi sugerencia de 'darle formato' con el evento '_exit' del control textbox [solo ten presente lo de puntos y comas] :D
b) suponiendo que en el TextBox1 introduces 9,50
el codigo del evento lo 'convierte' en... -> 9,50% [toma nota que dicho 'valor' ES un dato-texto]
c) comentado ya que VBA es 'US-Centric' [ya sabes... miles separados por coma y decimales separados por punto] :-((
c.1) si utilizaras como 'convertidor' la funcion: -> Val(TextBox1) estaria 'leyendose' como: -> Val("9,50%")
c.2) al 'llegar' a la coma... VBA 'detiene' su lectura 'numerica' :\... por lo que obtendrias como 'valor' [solo]: -> 9 [ya vamos ?]
d) para 'evitar' esa 'forma de lectura' [de numeros-comas] por VBA... mi 'sugerencia' es depositar directo en la celda SIN el signo '%'
-> Left(TextBox1, Len(TextBox1) - 1) lo que 'regresaria' el texto 'convertido' de: -> 9,50% a: -> 9,50
y despues dividirlo por 100

3) para el caso del codigo que expones...
a) no se aprecia cual es la 'relacion' entre la celda donde depositas el contenido del textbox y la variable: -> 'Subida' -???-
b) el evento '_change' del textbox se 'dispara' -> por cada caracter introducido en el control... [te sugiero el evento '_exit'] -?-

por 'lo demas'... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

p.d. desde Mexico ;)

__ los codigos expuestos __
Para lo otro te pongo el codigo: [...]
Private Sub Textbox1_Change()
Worksheets("Hoja").Range("C11").Select
ActiveCell = Textbox1 / 100
ActiveCell = Format(ActiveCell, "0.00%")
End Sub

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Subida = Format(Textbox1 / 100, "0.00%")
End Sub

... No se si eres de Espa#a, aqui son casi las 4 de la madrugada. Ma#ana continuare [...]




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida