Excel función HOY() no volatil

02/11/2006 - 20:35 por Pablo Fdez. | Informe spam
Hola a todos.
Estoy empleando una macro de KL para fijar una fecha en una columna cuando
se aporta un dato en otra columna.
Ejemplo:

Col A Col B
dato 1 Fecha
dato 2 Fecha
dato 3 Fecha

La fecha de filas anteriores no debe cambiar cuando se aportan nuevos
datos.Todo funciona correctamente cuando el dato se aporta manualmente
pero cuando se arrastra y autorellenan las filas posteriores ( Col
A). la fecha del dato que se arrastra tambien cambia. ¿ como se puede
evitar esto?
Los datos de la Col A son números correlativos y se autorellenan en
diferentes momentos del día.

Este es el código

'Inicio codigo--
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, c As Range
On Error Resume Next
Set rng = Intersect(Target, [A:A])
On Error GoTo 0
If rng Is Nothing Then Exit Sub
For Each c In rng
c.Offset(, 1) = Now
' sustituye "Now" por "Date" si solo quieres la fecha
Next c
[B:B].EntireColumn.AutoFit
End Sub
'Fin codigo--

Saludos
Pablo Fdez.

Preguntas similare

Leer las respuestas

#1 Tux
03/11/2006 - 20:09 | Informe spam
Pablo Fdez. escribió:
Hola a todos.
Estoy empleando una macro de KL para fijar una fecha en una columna cuando
se aporta un dato en otra columna.
Ejemplo:

Col A Col B
dato 1 Fecha
dato 2 Fecha
dato 3 Fecha

La fecha de filas anteriores no debe cambiar cuando se aportan nuevos
datos.Todo funciona correctamente cuando el dato se aporta manualmente
pero cuando se arrastra y autorellenan las filas posteriores ( Col
A). la fecha del dato que se arrastra tambien cambia. ¿ como se puede
evitar esto?
Los datos de la Col A son números correlativos y se autorellenan en
diferentes momentos del día.

Este es el código

'Inicio codigo--
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, c As Range
On Error Resume Next
Set rng = Intersect(Target, [A:A])
On Error GoTo 0
If rng Is Nothing Then Exit Sub
For Each c In rng
c.Offset(, 1) = Now
' sustituye "Now" por "Date" si solo quieres la fecha
Next c
[B:B].EntireColumn.AutoFit
End Sub
'Fin codigo--

Saludos
Pablo Fdez.



Hola Pablo :-)

He probado el codigo y te refieres a que si por ejemplo nos ponemos en
la Celda donde dice "dato 3 Fecha" y arrastramos hacia abajo, ¿tambien
arrastra la fecha? :-)

¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#2 Pablo Fdez.
04/11/2006 - 00:56 | Informe spam
"Tux" wrote:

Pablo Fdez. escribió:
> Hola a todos.
> Estoy empleando una macro de KL para fijar una fecha en una columna cuando
> se aporta un dato en otra columna.
> Ejemplo:
>
> Col A Col B
> dato 1 Fecha
> dato 2 Fecha
> dato 3 Fecha
>
> La fecha de filas anteriores no debe cambiar cuando se aportan nuevos
> datos.Todo funciona correctamente cuando el dato se aporta manualmente
> pero cuando se arrastra y autorellenan las filas posteriores ( Col
> A). la fecha del dato que se arrastra tambien cambia. ¿ como se puede
> evitar esto?
> Los datos de la Col A son números correlativos y se autorellenan en
> diferentes momentos del día.
>
> Este es el código
>
> 'Inicio codigo--
> Private Sub Worksheet_Change(ByVal Target As Range)
> Dim rng As Range, c As Range
> On Error Resume Next
> Set rng = Intersect(Target, [A:A])
> On Error GoTo 0
> If rng Is Nothing Then Exit Sub
> For Each c In rng
> c.Offset(, 1) = Now
> ' sustituye "Now" por "Date" si solo quieres la fecha
> Next c
> [B:B].EntireColumn.AutoFit
> End Sub
> 'Fin codigo--
>
> Saludos
> Pablo Fdez.

Hola Pablo :-)

He probado el codigo y te refieres a que si por ejemplo nos ponemos en
la Celda donde dice "dato 3 Fecha" y arrastramos hacia abajo, ¿tambien
arrastra la fecha? :-)

¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Hola de nuevo.


Gracias por tu respuesta, Tux
Te expongo un ejemplo:
Si Dato 3 ( A30 ) se ha introducido a las 10:00:30, en celda (B30 ) aparece
"dd-mm-aa 10:00.30".
Si a las 11:00:00 seleccionamos A30 y autorellenamos hacia abajo, en B31 e
inferiores aparece "dd-mm-aa-11:00:00" ...pero... A30 tambien cambia y esto
es lo que no deseo.
Los datos de la columna A son numeros consecutivos y necesito conocer el
momento exacto de su introducción (para ello está la columna "Fecha") y que
esta fecha no se vea afectada por Autorellenar.
Espero haber aclarado el proceso.
Espero comentarios
Salu2
Pablo Fdez.
Respuesta Responder a este mensaje
#3 Héctor Miguel
04/11/2006 - 01:28 | Informe spam
hola, Pablo !

... expongo un ejemplo:
Si Dato 3 (A30) se ha introducido a las 10:00:30, en celda (B30 ) aparece "dd-mm-aa 10:00.30".
Si a las 11:00:00 seleccionamos A30 y autorellenamos hacia abajo, en B31 e inferiores aparece "dd-mm-aa-11:00:00"
...pero... A30 tambien cambia y esto es lo que no deseo.
Los datos de la columna A son numeros consecutivos y necesito conocer el momento exacto de su introduccion
(para ello esta la columna "Fecha") y que esta fecha no se vea afectada por Autorellenar...



el unico 'detalle'... es que cuando hacemos un 'auto-relleno'... la/s celda/s 'de base' -tambien- 'sufren' de una re/entrada de sus datos :-(
puedes comprobarlo si aplicas [momentaneamente] la siguiente instruccion en el modulo de codigo de 'esa' hoja y haces un auto-relleno...
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
End Sub

si suponemos que la entrada de datos [de los cuales requieres conocer 'el momento' en que ocurren]...
el usuario los dara [o pudiera darlos] de entrada 'uno-por-uno' -> y NO por 'bloques' o grupos de celdas -?-
podrias 'condicionar' el evento '_change' para que -solo- anote fecha y hora de los datos 'reales' [uno a uno] que haga el usuario -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Pablo Fdez.
04/11/2006 - 02:20 | Informe spam
"Héctor Miguel" wrote:

hola, Pablo !

> ... expongo un ejemplo:
> Si Dato 3 (A30) se ha introducido a las 10:00:30, en celda (B30 ) aparece "dd-mm-aa 10:00.30".
> Si a las 11:00:00 seleccionamos A30 y autorellenamos hacia abajo, en B31 e inferiores aparece "dd-mm-aa-11:00:00"
> ...pero... A30 tambien cambia y esto es lo que no deseo.
> Los datos de la columna A son numeros consecutivos y necesito conocer el momento exacto de su introduccion
> (para ello esta la columna "Fecha") y que esta fecha no se vea afectada por Autorellenar...

el unico 'detalle'... es que cuando hacemos un 'auto-relleno'... la/s celda/s 'de base' -tambien- 'sufren' de una re/entrada de sus datos :-(
puedes comprobarlo si aplicas [momentaneamente] la siguiente instruccion en el modulo de codigo de 'esa' hoja y haces un auto-relleno...
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
End Sub

si suponemos que la entrada de datos [de los cuales requieres conocer 'el momento' en que ocurren]...
el usuario los dara [o pudiera darlos] de entrada 'uno-por-uno' -> y NO por 'bloques' o grupos de celdas -?-
podrias 'condicionar' el evento '_change' para que -solo- anote fecha y hora de los datos 'reales' [uno a uno] que haga el usuario -?-

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

Hola Hector, gracias por tu rapida respuesta.

Entiendo que solo me queda "capar" el Auto-relleno ó condicionar el evento change, ¿puedes adelantarme un modo de hacerlo?


En caso de introducir los datos -uno a uno- necesito un aviso ( quizás un
MsgBox) que indique si el dato introducido no es correlativo al anterior (los
incrementos son =1)
Salu2
Pablo Fdez.
Respuesta Responder a este mensaje
#5 Héctor Miguel
04/11/2006 - 02:38 | Informe spam
hola, Pablo !

Entiendo que solo me queda "capar" el Auto-relleno o condicionar el evento change
puedes adelantarme un modo de hacerlo?
En caso de introducir los datos -uno a uno- necesito un aviso (quizas un MsgBox)
que indique si el dato introducido no es correlativo al anterior (los incrementos son =1)



1) si la columna 'A' tiene el [unico ?] objetivo de una numeracion correlativa/consecutiva/...
y si en la columna 'B' se pone la fecha para identificar 'cuando' se dio una entrada de datos 'reales'...

2) podriamos suponer/asumir/... que los datos 'reales' se dan de entrada en las columnas 'C' y posteriores -?-

3) cual seria el sentido de 'atrapar' una fecha en la columna 'B' por el solo hecho de auto-rellenar la numeracion en 'A' -?-
o... existe la posibilidad de que numeraciones correlativas YA ENTRADAS [en la columna 'A'] pudieran ser... 'modificadas' -?-

[creo que] con un poco mas de detalles de cual es la situacion 'real' que tratas de 'controlar'...
podrian surgir otro tipo de propuestas -?-

comentas [si hubiera] algun otro dato 'relevante' ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida