Referenciar la celda contigua a la derecha de la celda activa ...

Mediante este código:

Sheets("MIS_REGISTROS").Select
Range("N1000000").End(xlUp).Offset(1, 0).Select 
Sheets("MIS_CALCULOS"). Range("P14"). Copy

... Hago activa, en la Hoja "MIS_REGISTROS", la celda siguiente a la última con datos de su Columna "N" y copio en ella el valor figurado en la Celda "P14" de la Hoja del mismo libro llamada "MIS_CALCULOS".

A partir de lo anterior pretendía copiar en la celda contigua por la derecha a la primera de las celdas que he citado el valor de la celda "P15" de "MIS_CALCULOS", pero se me resiste...

1 Respuesta

Respuesta
1

Entiendo que lo que necesitas es obtener algo como lo de la imagen, donde los textos en negro corresponden a las filas 14 y 15 de la hoja Mis_Calculos.

Entonces esta macro te servirá..... sino aclaramelo con alguna imagen tuya.

Sub COPIA()
Set destino = Sheets("MIS_REGISTROS")
Set ubica = destino.Range("N1000000").End(xlUp).Offset(1, 0)
Sheets("MIS_CALCULOS").Range("P14").Copy Destination:=ubica
Sheets("MIS_CALCULOS").Range("P15").Copy Destination:=ubica.Offset(0, 1)
End Sub

Si vas a rellenar algunas col más, podrías utilizar un With.... End With como en este ejemplo:

Sub COPIA_2()
'x Elsamatilde
Set destino = Sheets("MIS_REGISTROS")
Set ubica = destino.Range("N1000000").End(xlUp).Offset(1, 0)
With Sheets("MIS_CALCULOS")
    .Range("P14").Copy Destination:=ubica
    .Range("P15").Copy Destination:=ubica.Offset(0, 1)   '1 col a derecha
    .Range("P16").Copy Destination:=ubica.Offset(0, 2)   '2 col a derecha
End With
End Sub

Sdos.

Elsa

Próximamente, gran novedad en:  http://aplicaexcel.com/manuales

Gracias Elsa Matilde!!!  : - )

Pero -perdona mi torpeza, pues soy bastante nuevo en esto...-, al intercalar en mi código tu estructura With End With:

Set destino = Sheets("MIS_REGISTROS")
Set ubica = destino.Range("N1000000").End(xlUp).Offset(1, 0)
With Sheets("MIS_CALCULOS")
.Range("P14").Copy Destination:=ubica
.Range("P15").Copy Destination:=ubica.Offset(0, 1) '1 col a derecha
.Range("P16").Copy Destination:=ubica.Offset(0, 2) '2 col a derecha
.Range("P17").Copy Destination:=ubica.Offset(0, 3) '3 col a derecha
.Range("P18").Copy Destination:=ubica.Offset(0, 4) '4 col a derecha
End With

Me da 'Error de compilación: No se ha definido la variable' y en el Editor VBA me aparece sombreado 'destino'... 

A la vista de las dificultades que tenía con el orden de copiado hasta ahora seguido... que si primero copio en el medio de la línea -Range("N1000000").End(xlUp).Offset(1, 0).Select... luego para sigo para delante... luego comienzo en la misma línea... etc etc...

He optado por empezar por la celda " An", y yo diría que ahora mejor:

Sheets("MIS_REGISTROS").Select
Range("A1000000").End(xlUp).Offset(1, 0).Select
'ActiveCell.PasteSpecial xlPasteValues
ActiveCell.Offset(0, 0) = Me.COD_REG
ActiveCell.Offset(0, 1) = Me.USUARIO
ActiveCell.Offset(0, 2) = Me.FECHA_REG

ActiveCell.Offset(0,3) = Sheets("MIS_CALCULOS").Range("P14").Copy
ActiveCell.Offset(0,4) = Sheets("MIS_CALCULOS").Range("P15").Copy

... Salvo en una cosa:

Como se ve arriba copio en la hoja "MIS_REGISTROS" datos procedentes de dos orígenes: Un UserForm, y datos de la Hoja "MIS_CALCULOS".

Pues bien: con el copiado de los datos procedentes del UserForm -MeCod_Reg.. Me.Usuario...- no tengo problemas, pero los otros, SIENDO NÚMEROS, me los pega como si fueran valores booleanos... me copia el valor 'VERDADERO'!!!

He probado a poner antes de ordenar el copiado de estos valores la línea de código que en su día me propueso Dante para otra cuestión que me funcionó correctamente, pero en esta ocasión me da el error 1004... también he probado a definir la celda de destino como numérica.. pewro nada...  ¿¿??

Veo que me sobraba el 'Copy'

Tema resuelto.

Qué pena con el foro que no nos envía las notificaciones.

Luego de mi código correcto, tu mensaje de error fue claro y te hubiese resuelto en el momento de haber recibido la notificación: 'no se ha declarado la variable'.

Colocando al inicio del código: Dim destino, ubica

Ahora, con tantos cambios que realizaste ya no te puedo seguir. Pero está visto que te sobraba el 'copy'.

Y cuando tenés un solo Userform no es necesario que incluyas la palabra ME... ya que se sobreentiende que se trata de controles de ese form.

PD) cuando tengan dudas pueden enviarme las muestras a mi correo. Siempre dejo enlaces o a mi sitio o a mi canal y allí están los datos ;)

Sdos.

Elsa

¡Gracias! De nuevo, Elsa.

Tomo nota  : - )

Hola  Elsa,  la verdad es que estoy sorprendido más que agradablemente de tu interés en ayudarme en lo que en su día planteé aquí, es por ese interés por lo que me he atrevido a escribirte desde tu página web [[[no me ha dejado, y es por lo que sigo aquí...]]], y lo hago para pedirte ayuda en el remate del asunto que inicié con este hilo, y que pretendía cerrar con este otro: https://www.todoexpertos.com/preguntas/cotm7hrl8dcxxuvw/copiar-datos-de-un-libro-activo-a-otro-ubicados-ambos-en-un-servidor-de-red.

 Al que añadiría lo siguiente:

 Dado que la estructura de las Hojas MIS_EXPEDIENTES -de los libros de los usuarios ubicados en C:\ - y F:\Expedientes_Usuarios\Todos_Los_Expedientes\Expedientes, ES IDÉNTICA a la de la hoja MIS_EXPEDIENTES, y que en esta última ya tengo la fila del ‘registro’ del expediente dado de alta por el usuario, bastaría que:

 a) Me lleve al portapapeles esa fila de esa hoja y, después, haciendo activa la única hoja de F:\Expedientes_Usuarios\Todos_Los_Expedientes, llamada Expedientes,

 b) Quizás tras un simple Range("A1000000").End(xlUp).Offset(1, 0).Select, COPIAR en la celda ahora activa el contenido de la fila que tengo en el portapapeles…

 Pero para ello, Elsa, me temo que me faltan conocimientos, ¿me puedes ayudar?

 Gracias.

Enviame un correo a: cibersoftPUNTOargARROBAgmailPUNTOcom

Reemplaza los textos en mayúsculas por su caracter... debo hacerlo así porque el corrector de este sitio me transforma siempre mal el correo ;(

Quisiera me comentes qué te pasó en mi sitio... para arreglarlo y de paso, si puedo, me ocupo de tu nueva consulta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas