FIJAR FECHA

25/09/2008 - 18:22 por Mario | Informe spam
Hola Todos,

Necesito una macro que me permita insertar en celda A1 la fecha del
dia cuando ingreso algun dato en la celda B1. No puedo hacerlo con la
formula HOY() ya que cada dia actualiza la fecha, y lo que quiero es
fijarla al dia corriente y la mantenga como dato de fecha de
transaccion.

Gracias A Todos,


Mario.

Preguntas similare

Leer las respuestas

#1 amontes
25/09/2008 - 21:54 | Informe spam
On 25 sep, 10:22, Mario wrote:
Hola Todos,

Necesito una macro que me permita insertar en celda A1 la fecha del
dia cuando ingreso algun dato en la celda B1. No puedo hacerlo con la
formula HOY() ya que cada dia actualiza la fecha, y lo que quiero es
fijarla al dia corriente y la mantenga como dato de fecha de
transaccion.

Gracias A Todos,

Mario.



Esto puede servirte, suerte:
http://www.geocities.com/excelmx/HoraEstatica.xls
Respuesta Responder a este mensaje
#2 Héctor Miguel
25/09/2008 - 22:15 | Informe spam
hola, Mario !

Necesito una macro que me permita insertar en celda A1 la fecha del dia cuando ingreso algun dato en la celda B1.
No puedo hacerlo con la formula HOY() ya que cada dia actualiza la fecha, y lo que quiero es fijarla al dia corriente
y la mantenga como dato de fecha de transaccion...



en lugar de utilizar la funcion de hoja de calculo =ahora(), o =hoy() que son 'volatiles' por naturaleza...
prueba definiendo una funcion personalizada (por vba) insertando un modulo de codigo estandar en tu proyecto de macros...
y copia/pega las siguientes instrucciones:

Function miHora(Celda As Range) As Date
Volatile = False
miHora = Now
End Function

a la/s celda/s donde la uses, deberas establecerles un formato numerico personalizado +/- del estilo: h:mm:ss.0000
y su uso podria ser de la siguiente forma: [A1] =SI(B1<>"",miHora(B1))

la instruccion 'Volatile = False' sirve para evitar re/calculos en las celdas donde la uses por un re/calculo de tu modelo

saludos,
hector.
Respuesta Responder a este mensaje
#3 Servando
26/09/2008 - 20:21 | Informe spam
Hola Mario:

Con la opcion que te proporciono Hector Miguel funciona perfectamente para
lo que tu deseas, pero no "reaciona" ante un cambio en una celda de la
columna B a menos que la edites o la escribas.
Esto es bueno, porque requiere de que tu seas el que determine cuando fijar
la fecha. Ahora yo te pongo otra rutina que reacciona automaticamente ante
CUALQUIER cambio que hagas en la columna B, pero ten cuidado, ya que aqui
bastara conque tu hagas cualquier cosa en la columna B, para que te ponga la
fecha en la celda contigua de la columna A.

Evalua cual es la que te sirve mas y usala a tu conveniencia.

Esta rutina tiene que estar en el codigo de la hoja donde estas capturando,
asi que primero haz clic derecho sobre la etiqueta de la hoja de captura y
selecciona "ver codigo" y a continuacion pegas lo siguiente:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Offset(0, 1).Value = "" Then
Target.Offset(0, -1).Value = Date
End If
End If
End Sub

Por favor, retroalimentanos y dinos si esto te fue de utilidad.

Saludos
Servando Villalon
Respuesta Responder a este mensaje
#4 Héctor Miguel
27/09/2008 - 01:12 | Informe spam
hola, Servando !

1) podrias aclarar a que te refieres con:...
... no "reaciona" ante un cambio en una celda de la columna B a menos que la edites o la escribas.



2) y comentar el porque condicionas cambios en la columna B, a que la columna C no este vacia para poner fecha en la columna A ?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Offset(0, 1).Value = "" Then
Target.Offset(0, -1).Value = Date
End If
End If
End Sub



ademas, si llegara a haber cambios en mas de una celda de la columna B, tu propuesta falla con el Target.Offset :-(

saludos,
hector.
Respuesta Responder a este mensaje
#5 Servando
28/09/2008 - 07:32 | Informe spam
Hola Hector:

1) podrias aclarar a que te refieres con:...
... no "reaciona" ante un cambio en una celda de la columna B a menos que


la >edites o la escribas.

Pues a que creo que me esta afectando la edad :(

2) y comentar el porque condicionas cambios en la columna B, a que la
columna C no este vacia para poner fecha en la columna A ?

Porque me equivoque al escribir el codigo (me falto el signo menos). Corrijo
y pongo el codigo adecuado.

Con este codigo no se actualiza la celda de la Col A si en esta ya hay algo.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Offset(0, -1).Value = "" Then
Target.Offset(0, -1).Value = Date
End If
End If
End Sub

Con este codigo no importa si ya contiene algo, cada modificacion en la
celda de la columna B afectara la celda de la columna A.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Target.Offset(0, -1).Value = Date
End If
End Sub

Si interesa tambien poner la Hora entonces hay que cambiar "Date" por "Now",
asi como el correspondiente formato en la celda.

Mil disculpas si en lugar de ayudar, cause mayor confusion. Espero que ahora
si valga algo mi aportacion

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