Una makro de Excel me genera error.

Tengo ua makro de excel con la cual busco que automaticamente me genere la fecha actual en el registro pero que luego no se actualice, le he agregado otra instrucción para que me genere de forma similar otra fecha, pero al trabajar el archivo de excel, me genera error.

Este es el codigo:

Private Sub Worksheet_change(ByVal Target As Range)
If Target.Column = 4 Then
    Cells(Target.Row, 6).Value = Now
End If
If Target.Column = 2 Then

End Sub

Ahora quiero que ademas me genere otra fecha en otra parte del archivo y le he agregado este otro código, pero algo me falta porque me genera error. Agradesco su generosa ayuda, no se nada de VB, pero me gusta mucho trabajar en Excel.

Private Sub Worksheet_change(ByVal Target As Range)
If Target.Column = 4 Then
    Cells(Target.Row, 6).Value = Now
End If
If Target.Column = 2 Then
    ActiveSheet.Unprotect "0000"
    Cells(Target.Row, 5).Value = Now
    ActiveSheet.Protect "0000"
End If
End Sub

1 respuesta

Respuesta
1

Cuando un código genera error, deben comentar el tipo de error y en qué línea se produce.

Así que imaginaré algunas opciones posibles:

En el objeto HOJA donde quieras que se realice esta tarea, seleccioná el evento Change para que te quede de este modo y así se evita tenerlo mal escrito (lo veo en minúsculas en tu ejemplo)

El resto está bien... pero considerando que estás desprotegiendo la hoja solo en el segundo caso, quizás también la col 6 donde va la primer hora esté bloqueada... y también debes desproteger la hoja para esto.

Si no es nada de esto no valores aún solo aclara.

Hola Sra Elsa, ante todo gracias por dedicar unos minutos de tu preciado tiempo a mi solicitud

Yo creo que mi petición fue mal plateada de mi parte, voy a ser más explicito con lo que necesito, lo cual es muy sencillo: tengo un código que me hace lo siguiente, si en la columnba B entro algún dato, en la E me aparece fecha y hora, es decit captura en que fecha y en que momento se hizo el ingreso o modificación el la col B, el dato generado queda constante, así es como lo necesito, lo anterior me funciona de manera perfecta.

Concretamente que es lo que necesito y no he podido, es algo muy parecido en el mismo archivo de excel quiero que cuando yo entre un dato el la columna DE, en la F ocurra lo mismo, me capture fecha y hora, lo que no he podido es que al código de VB que tengo acomodarle ese nuevo c´digo de VB para que ambas cosas funcionen.

Este es el código que tengo y que me funciona correctamente

Private Sub Worksheet_change(ByVal Target As Range)
If Target.Column = 2 Then
    ActiveSheet.Unprotect "0000"
        Cells(Target.Row, 5).Value = Now
    ActiveSheet.Protect "0000"
End If
End Sub

Por favor me puedes ayudar a acomodarle el resto del código par que ambas cosas funcionen, hay que tener en cuenta en donde se ubica el nuevo código porque como ves el codigoactual me protege y desprotge la hoja dado que el archivo para ser operado debe estar protegido para no arruinar fórmulas.

Nota

Yo entiendo excel y me gusta mucho, pero de VB no se casi nada

Wilmar Arango Jaramillo

Colombia

Solo se puede tener un evento Change por hoja, por lo que allí hay que ponerle todas las condiciones.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'si el cambio NO es en col B ni D no se ejecuta
If Target.Column <> 2 And Target.Column <> 4 Then Exit Sub
ActiveSheet.Unprotect "0000"
If Target.Column = 2 Then     'cambio en B
    Cells(Target.Row, 5).Value = Now   'fecha/hora en col E
ElseIf Target.Column = 4 Then  'cambio en D
    Cells(Target.Row, 6).Value = Now    'fecha/hora en col F
End If
ActiveSheet.Protect "0000"
End Sub

Si esto resuelve tu consulta no olvides valorarla (Excelente o Buena).

¡Gracias!

Mil gracias Sra Elsa !

Me funciono de manera perfecta, quedo muy agradecido, pronto estaré haciéndole otra consulta, mil gracias de nuevo y bendiciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas