Odificación de Macro que captura en última fila vacía, lo haga ahora en la primera fila de la base de datos y desplace los datos

Conseguí una Macro con la que recojo información que se genera en celdas, para llevarlos a una base de datos, (es un checador de entrada y salida) lo hace a la perfección, con la ayuda de un experto logre que esto lo hiciera desde un UserForm con dos botones similares a los que tenia antes en la misma hoja, la macro ya la asigne a los CommandButton del UserForm y funciona muy bien.
Lo que esta Macro realiza: es tomar los datos del usuario de entrada y los lleva a una base de datos que se encuentra en la misma hoja; busca la ultima fila vacía e inserta los datos en las celdas respectivas al oprimir el botón de Entrada, luego toma otra vez los datos del usuario, busca el ultimo registro del usuario e inserta la hora de salida al oprimir el botón de Salida.
Lo que deseo hacer a la Macro: es invertir la acción, que el registro de los datos se den en la primera fila donde empieza la base de datos y no en la ultima, que los datos que se encuentra ahí se desplacen hacia abajo cuando oprima el botón Entrada, luego cuando oprima el botón Salida busque el ultimo registro del ese usuario y registre la salida.

ya intente hacerlo, logro realizar el registro de entrada, pero el de la salida no

esta es la macro sin cambios, esta es la funciona bien (no tiene cambios)
Sub Add_control(tipoMov As String)
Dim miCelda As Range
Dim FilaLibre As Long
Set miCelda = [datos]
FilaLibre = ActiveSheet.Cells(65536, miCelda.Column).End(xlUp).Row + 1
If tipoMov = "bEntrada" Then
' Buscar primera fila libre y rellenar
FilaLibre = ActiveSheet.Cells(65536, miCelda.Column).End(xlUp).Row + 1
ActiveSheet.Cells(FilaLibre, miCelda.Column).Value = [codemp]
ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 1).Value = [b6]
ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 2).Value = Now()
ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 4).Value = Now()
ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 5).Value = Now()
Else
' Buscar la última entrada de este empleado que no tenga hora de salida y rellenar
Do While FilaLibre > [datos].Row
FilaLibre = FilaLibre - 1
If ActiveSheet.Cells(FilaLibre, miCelda.Column).Value = [codemp] Then
If ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 3).Value = "" Then
ActiveSheet.Cells(FilaLibre, miCelda.Column).Offset(0, 3).Value = Now()
Exit Do
End If
End If
Loop
End If
End Sub
saludos y gracias.

1 respuesta

Respuesta
1

Raul Ceseña!

Me la pido, que yo fui ese experto que hizo que funcionaran de forma distinta los botones de entrada y salida.

Luego contesto

¿En qué número de fila se insertará el registro?

Veo que usas rangos creados como datos y codemp

Será mejor que me mandes el fichero y así reviso todo y me entero mejor.

Mi correo es

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas