Vba

Hola Fernando, veo que estás abarrotado de preguntas... Me imagino que esta es muy sencill para ti.
Mi pregunta es:
Tengo unas titulo es la fila 1 y que son: Nombre, Código, Básico, Fecha_Ingreso, en la fila 2 debo llenar los datos, pero al ingresar el último dato (osea la Fecha_ingreso)y exactamente al pulsar ENTER los datos ingresados deben ser copiados a la hoja2 y en la segunda fila.. Osea el encabezado en repetido.. Yo estuve probando así:
En el evento change de la hoja1.
Seleccionar el rango de la fila de datos
si chr = 13 entonces
Corto los datos de la hoja1, activo la hoja2 y Copy pero no funciona,... Sé que esta mal planteada la codificación... Y necesito de tu ayuda... Gracias.

1 Respuesta

Respuesta
1
En realidad no es tan sencilla, pero aquí vamos.
Asumo que lo que quieres es una especie de máscara de entrada, de forma tal que al ingresar los datos en ella se transfieran a la segunda hoja *agregando las líneas una después de la otra*. (Si así no fuera, sería más sencillo cargar directamente en la segunda hoja, ¿cierto?)
Usaremos el evento Change, como sugerías, controlando que la celda final sea D2 (Debajo de Fecha de Ingreso, pero puedes cambiarlo si esa no fuera la celda final)
Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja donde quieres que esto ocurra (donde harás la carga de datos). Da doble click sobre ella.
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address(False, False) = "D2" Then FormCarga
End Sub
Este código controla que estuvieras en la celda D2 y, si así fuera, dispara la macro FormCarga.
Inserta un módulo nuevo y allí pegarás el código siguiente:
Sub FormCarga()
OrigSheet = ActiveSheet.Name
Range("A2:D2").Copy
'================== Modificar de acuerdo a tus datos reales
HojaDest = "Hoja2"
Firstcell = "A1"
'==================
Sheets(HojaDest).Select
Range(Firstcell).Select
LCol = Selection.Column
LCell = Selection.Row
LCell = LCell + Selection.CurrentRegion.Rows.Count
Cells(LCell, LCol).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Cells(LCell, LCol).Select
Sheets(OrigSheet).Select
Range("A2:D2").ClearContents
Range("A2").Select
End Sub
(Hay dos variables entre las líneas de ==== que deberás reemplazar por tus datos propios. Corresponden a la hoja donde se deben volcar los datos y la primer celda superior de la derecha donde comienza tu tabla)
Esta macro sirve para identificar la última celda ocupada en la hoja de carga y allí pega los datos cargados, luego, borra la hoja original para una nueva carga.
Cierra el editor de Visual Basic y graba el archivo.
Pruébalo y dime si funciona OK.
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas