Control de Cambios - Fechador

30/09/2011 - 18:19 por Johann Romero Gonzalez | Informe spam
Una consulta, espero me puedan ayudar a mejorar esta macro, muchas
gracias desde ahora.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.MoveAfterReturn = False
If Target.Count = 1 Then
If (Target.Column = 4 And Target <> 0) Then
Target.Offset(-0, 1) = Now
End If
End If
End Sub


Esta macro lo que hace es que en la columna 4 el dato que uno ingrese
automaticamente en la 5ta columna en la misma fila aparece la fecha y
hora, todo funciona muy bien, pero quisiera que se guarde un
historico, es decir, si es la primera vez que ingreso un dato, en la
columna 5 se ingrese la fecha automaticamente, pero si mas adelante,
nuevamente se modifica ese datos, en la columna 6 tendria que
ingresarse la nueva fecha, como puedo hacer eso?

gracias

Preguntas similare

Leer las respuestas

#1 Pedro F. Pardo
03/10/2011 - 17:42 | Informe spam
A ver que te parece esta modificación:
(Observación: He eliminado el signo negativo del 0 en el offset porque
no veo que fuera necesario)

La rutina Do While... Loop es la que busca la siguiente celda vacia a
la derecha de la columna 4.


Private Sub Worksheet_Change(ByVal Target As Range)
Application.MoveAfterReturn = False
If Target.Count = 1 Then
If (Target.Column = 4 And Target <> 0) Then
Target.Offset(0, 1).Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(0, 1).Select
Loop
ActiveCell.Value = Now
Target.Select
End If
End If
End Sub

Saludos,

On Sep 30, 5:19 pm, Johann Romero Gonzalez
wrote:
Una consulta, espero me puedan ayudar a mejorar esta macro, muchas
gracias desde ahora.

Private Sub Worksheet_Change(ByVal Target As Range)
     Application.MoveAfterReturn = False
     If Target.Count = 1 Then
         If (Target.Column = 4 And Target <> 0) Then
            Target.Offset(-0, 1) = Now
         End If
     End If
 End Sub

Esta macro lo que hace es que en la columna 4 el dato que uno ingrese
automaticamente en la 5ta columna en la misma fila aparece la fecha y
hora, todo funciona muy bien, pero quisiera que se guarde un
historico, es decir, si es la primera vez que ingreso un dato, en la
columna 5 se ingrese la fecha automaticamente, pero si mas adelante,
nuevamente se modifica ese datos, en la columna 6 tendria que
ingresarse la nueva fecha, como puedo hacer eso?

gracias
Respuesta Responder a este mensaje
#2 J Romero
04/10/2011 - 19:45 | Informe spam
On 3 oct, 10:42, "Pedro F. Pardo" wrote:
A ver que te parece esta modificación:
(Observación: He eliminado el signo negativo del 0 en el offset porque
no veo que fuera necesario)

La rutina Do While... Loop es la que busca la siguiente celda vacia a
la derecha de la columna 4.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.MoveAfterReturn = False
    If Target.Count = 1 Then
        If (Target.Column = 4 And Target <> 0) Then
            Target.Offset(0, 1).Select
            Do While ActiveCell.Value <> ""
                ActiveCell.Offset(0, 1).Select
            Loop
            ActiveCell.Value = Now
            Target.Select
        End If
    End If
End Sub

Saludos,

On Sep 30, 5:19 pm, Johann Romero Gonzalez
wrote:







> Una consulta, espero me puedan ayudar a mejorar esta macro, muchas
> gracias desde ahora.

> Private Sub Worksheet_Change(ByVal Target As Range)
>      Application.MoveAfterReturn = False
>      If Target.Count = 1 Then
>          If (Target.Column = 4 And Target <> 0) Then
>             Target.Offset(-0, 1) = Now
>          End If
>      End If
>  End Sub

> Esta macro lo que hace es que en la columna 4 el dato que uno ingrese
> automaticamente en la 5ta columna en la misma fila aparece la fecha y
> hora, todo funciona muy bien, pero quisiera que se guarde un
> historico, es decir, si es la primera vez que ingreso un dato, en la
> columna 5 se ingrese la fecha automaticamente, pero si mas adelante,
> nuevamente se modifica ese datos, en la columna 6 tendria que
> ingresarse la nueva fecha, como puedo hacer eso?

> gracias





Graciasss

Funciono Perfecto!
Me has ayudado Mucho

Saludos,
Respuesta Responder a este mensaje
#3 J Romero
05/10/2011 - 16:28 | Informe spam
On 4 oct, 12:45, J Romero wrote:
On 3 oct, 10:42, "Pedro F. Pardo" wrote:









> A ver que te parece esta modificación:
> (Observación: He eliminado el signo negativo del 0 en el offset porque
> no veo que fuera necesario)

> La rutina Do While... Loop es la que busca la siguiente celda vacia a
> la derecha de la columna 4.

> Private Sub Worksheet_Change(ByVal Target As Range)
>     Application.MoveAfterReturn = False
>     If Target.Count = 1 Then
>         If (Target.Column = 4 And Target <> 0) Then
>             Target.Offset(0, 1).Select
>             Do While ActiveCell.Value <> ""
>                 ActiveCell.Offset(0, 1).Select
>             Loop
>             ActiveCell.Value = Now
>             Target.Select
>         End If
>     End If
> End Sub

> Saludos,

> On Sep 30, 5:19 pm, Johann Romero Gonzalez
> wrote:

> > Una consulta, espero me puedan ayudar a mejorar esta macro, muchas
> > gracias desde ahora.

> > Private Sub Worksheet_Change(ByVal Target As Range)
> >      Application.MoveAfterReturn = False
> >      If Target.Count = 1 Then
> >          If (Target.Column = 4 And Target <> 0) Then
> >             Target.Offset(-0, 1) = Now
> >          End If
> >      End If
> >  End Sub

> > Esta macro lo que hace es que en la columna 4 el dato que uno ingrese
> > automaticamente en la 5ta columna en la misma fila aparece la fecha y
> > hora, todo funciona muy bien, pero quisiera que se guarde un
> > historico, es decir, si es la primera vez que ingreso un dato, en la
> > columna 5 se ingrese la fecha automaticamente, pero si mas adelante,
> > nuevamente se modifica ese datos, en la columna 6 tendria que
> > ingresarse la nueva fecha, como puedo hacer eso?

> > gracias

Graciasss

Funciono Perfecto!
Me has ayudado Mucho

Saludos,





Una consulta mas Pedro,

La macro que modificaste funciona perfecto, pero quisiera adicionarle
algo mas, que haga lo siguiente:

En la columna 4, cuando me sitúo para escribir un dato, inmediatamente
en la columna 5 se escribe la fecha, bueno, hasta ahora todo OK, pero
quisiera agregarle una funcion mas, que quede como historico adicional
la informacion que se escribio, es decir, quedando de esta forma

asi esta actualmente:

A B C D E
F G

20 5/10

quisiera qeu sea asi:

A B C D E
F G

20
20 5/10

es decir, ingreso 20, y quiero que en la columna 6 se copie lo
ingresado de la 4 y al costado, columna 7 se ingrese la fecha (now).

e igual que tenga la función de grabar el historico, es decir, si lo
cambio al dia siguiente el dato, quede asi:

A B C D E
F G H I

35
20 5/10 35 6/10


de esta forma tengo un histórico de que dato se ingreso y la fecha, y
cuando se modifico igual.


Muchas gracias desde ahora

Saludos,

Johann
Respuesta Responder a este mensaje
#4 J Romero
05/10/2011 - 17:26 | Informe spam
On 5 oct, 09:28, J Romero wrote:
On 4 oct, 12:45, J Romero wrote:









> On 3 oct, 10:42, "Pedro F. Pardo" wrote:

> > A ver que te parece esta modificación:
> > (Observación: He eliminado el signo negativo del 0 en el offset porque
> > no veo que fuera necesario)

> > La rutina Do While... Loop es la que busca la siguiente celda vacia a
> > la derecha de la columna 4.

> > Private Sub Worksheet_Change(ByVal Target As Range)
> >     Application.MoveAfterReturn = False
> >     If Target.Count = 1 Then
> >         If (Target.Column = 4 And Target <> 0) Then
> >             Target.Offset(0, 1).Select
> >             Do While ActiveCell.Value <> ""
> >                 ActiveCell.Offset(0, 1).Select
> >             Loop
> >             ActiveCell.Value = Now
> >             Target.Select
> >         End If
> >     End If
> > End Sub

> > Saludos,

> > On Sep 30, 5:19 pm, Johann Romero Gonzalez
> > wrote:

> > > Una consulta, espero me puedan ayudar a mejorar esta macro, muchas
> > > gracias desde ahora.

> > > Private Sub Worksheet_Change(ByVal Target As Range)
> > >      Application.MoveAfterReturn = False
> > >      If Target.Count = 1 Then
> > >          If (Target.Column = 4 And Target <> 0) Then
> > >             Target.Offset(-0, 1) = Now
> > >          End If
> > >      End If
> > >  End Sub

> > > Esta macro lo que hace es que en la columna 4 el dato que uno ingrese
> > > automaticamente en la 5ta columna en la misma fila aparece la fecha y
> > > hora, todo funciona muy bien, pero quisiera que se guarde un
> > > historico, es decir, si es la primera vez que ingreso un dato, en la
> > > columna 5 se ingrese la fecha automaticamente, pero si mas adelante,
> > > nuevamente se modifica ese datos, en la columna 6 tendria que
> > > ingresarse la nueva fecha, como puedo hacer eso?

> > > gracias

> Graciasss

> Funciono Perfecto!
> Me has ayudado Mucho

> Saludos,

Una consulta mas Pedro,

La macro que modificaste funciona perfecto, pero quisiera adicionarle
algo mas, que haga lo siguiente:

En la columna 4, cuando me sitúo para escribir un dato, inmediatamente
en la columna 5 se escribe la fecha, bueno, hasta ahora todo OK, pero
quisiera agregarle una funcion mas, que quede como historico adicional
la informacion que se escribio, es decir, quedando de esta forma

asi esta actualmente:

A         B            C             D           E
F            G

                                       20          5/10

quisiera qeu sea asi:

A         B            C             D           E
F            G

                                       20
20          5/10

es decir, ingreso 20, y quiero que en la columna 6 se copie lo
ingresado de la 4 y al costado, columna 7 se ingrese la fecha (now).

e igual que tenga la función de grabar el historico, es decir, si lo
cambio al dia siguiente el dato, quede asi:

A         B            C             D           E
F            G          H          I

                                       35
20          5/10        35        6/10

de esta forma tengo un histórico de que dato se ingreso y la fecha, y
cuando se modifico igual.

Muchas gracias desde ahora

Saludos,

Johann





hola Pedro,

mira, hice estas modificaciones y funciono como quería, gracias

Private Sub Worksheet_Change(ByVal Target As Range)
Application.MoveAfterReturn = False


If Target.Count = 1 Then
If (Target.Column = 9 And Target <> 0) Then
Selection.Copy
Target.Offset(0, 25).Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(0, 1).Select
Loop
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Now
End If

End If

End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida