Ayuda con una macro... Urgente..

<span style="font-family: Arial; font-size: x-small;"><span style="font-family: Arial; font-size: x-small;">Hola a todos, quizas puedan ayudarme en lo siguiente;
Con ayuda de algunos foros he logrado hacer un código en el VBA de
excel el cual adquiere datos en la celda A1 y los envía a una celda
libre en la misma columna, cada vez que se hace esto muestra la fecha y
la hora de dicho proceso. El problema es que es necesario introducir el
dato en A1 y presionar enter para que la macro haga su trabajo. Lo que
necesito es que el dato de A1 sea enviado a una celda libre cuando
cambie, sin necesidad de darle enter, ni click, ni nada por el estilo.
Simplemente que funcione cuando dicha celda sea modificada externamente
o por otro programa. Adjunto el codigo; espero me puedas ayudar...
Muchas Gracias.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'columna A
Target.Offset(0, 1) = Date
Target.Offset(0, 2) = Time
End If
If Target.Address = "$A$1" Then
fila = 2
Do While Target.Offset(fila, 0).Value <> ""
fila = fila + 1
Loop
Target.Offset(fila, 0).Value = Target.Value
End If
End Sub
</span></span>
Respuesta
1
Tu problema: El problema es que es necesario introducir el
Dato en A1 y presionar enter para que la macro haga su trabajo.
Esa macro está programada para cuando algún rango/celda del libro activo CAMBIE se ejecute el código, porqué te resalto CAMBIE porque Excel hasta que tu no aceptas el cambio (ya sea con ENTER o TAB o FLECHA ARRIBA/ABAJO/DERECHA/IZQUIERDA) no sabe si lo que hay dentro de la celda se ha modificado o no..
Resumiendo si tu necesitas que "... el dato de A1 sea enviado a una celda libre cuando cambie..." ¿cómo sabes que ha cambiado? Supongamos que abres un libro y miras en A1 y no hay nada.. miras otra vez y no hay nada (por arte de magia alguien pone algo) pero tu no te das cuenta del cambio hasta que miras... pues Excel en el Evento CHANGE es como si tu miraras.. y después compara lo que había antes.. "nada" con lo que alguien puso "el dato A1 ha cambiado"
Si puedes ser más explicito a la hora de enunciar tu pregunta. Quizás podamos ayudarte a resolverla.
Saludos! Si te sirvió la respuesta, por favor finaliza y puntúa la pregunta, si hay alguna duda, no dudes en preguntarme de nuevo.
Hola, Gracias por responder; estuve mirando algunos tutoriales y noté que la falla estaba en el worksheet, ya que yo estaba usando Change y la que realmente me servia para detertar una variación de la celda A1 era el Worksheet_calculate. El programa con la modificación esta a continuación. Muchas gracias y estamos en contacto para que me colabores en el futuro.
Private Sub Worksheet_Calculate()
Static sismico As Variant
If Range("a1") <> sismico Then
Columns("A:E").AutoFit
ActiveSheet.Range("A1").Select
Do While Selection.Offset(fila, 0).Value <> ""
fila = fila + 1
Loop
Selection.Offset(fila, 0).Value = Selection.Value
End If
sismico = Range("a1")
If Selection.Column = 1 Then 'columna A
ActiveSheet.Cells(fila, 2).Select
Cells(fila + 1, 2) = Date
Cells(fila + 1, 3) = Time
'ActiveSheet.Cells(2, 1).Select
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas