copiar con macro desde un formulario a una base

6 envíos / 0 nuevos
Último envío
osin
Imagen de osin
Offline
última acción: Hace 12 años 11 meses
alta: 28/01/2010 - 12:28
Puntos: 76
copiar con macro desde un formulario a una base

hola a todos haber si me pueden ayudar necesito en esta macro que cada vez que precione la tecla pegar est se copie en la hoja base una tras otras es decir la fila que este basia siguiente a la escritura anterior si me pueden ayudar se los agradesco ya que e intentado pero no logro realizar esta accion

las referecia es al presionar copiar pegue en la hoja base en la celda A:1 y al realizar la misma accion sigua en la celda A:2 y asi sucesuvamente

 

AdjuntoTamaño
Office spreadsheet icon Libro1.xls16 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 6 horas 21 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
varias opciones

 

Si en tu Base siempre vas a tener datos en la columna A, puedes utilizar esto para localizar la última fila con datos, como cuando pulsas [ fin ] y [flecha abajo]

esto es una propiedad llamada End del rango. por ejemplo:

Range("A1").End(xlDown)  ' se refiere a la última celda con datos bajo la A1.

 Para referirte a la celda de debajo, es decir, la primera vacía será algo así (Tiene el inconveniente de que la primera vez, cuando no haya datos, se irá a la última fila de la hoja, así que habrá que comprobarlo antes):

Worksheets(HojaBase).Range("a1").End(xlDown).Offset(1, 0)

y por ejemplo, para asignar valores a partir de esa celda, puedes emplear Offset una vez más

With Worksheets("base").Range("a1").End(xlDown).Offset(1, 0)
   
    .Value = "la primera libre"
    .Offset(0, 1).Value = "una a la derecha"
   
End With

 

Bueno, ya puedes copiar y pegar los datos de tu hoja inicial a la otra, o puedes anotarlos celda a celda.

tal y como tienes tu hoja, prueba con esto (faltaría controlar el error para la primera fila), te lo pongo en el archivo adjunto:

Option Explicit

 

Const HojaMatriz = "matriz"
Const RangoDatos = "A2:J2"

Const HojaBase = "base"
Const RangoPrimeraCelda = "A1"

Sub Copiar()
    Worksheets(HojaMatriz).Range(RangoDatos).Copy
   
    With Worksheets(HojaBase)
        .Paste .Range(RangoPrimeraCelda).End(xlDown).Offset(1, 0)
  
    End With

End Sub

 

 

También podrías emplear el rango UsedRange de la hoja (como cuando pulsas [ Ctrl ] [ fin ]) que lleva al último rango utilizado en la hoja (esto tiene algunos inconvenientes, porque si eliminas información, la última celda se queda donde estaba)

Worksheets("base").UserRange.Rows.Count ' esto da las filas utilizadas en la hoja

------
Ya sé Excel, pero necesito más

 

 

AdjuntoTamaño
Office spreadsheet icon Libro1.xls41 KB

 

------
Ya sé Excel, pero necesito más.

visitante (no verificado)
Imagen de visitante
Re: varias opciones

muy util, gracias por el aporte..

como se puede modificar si se necesita que al pegar en HojaBase lo haga pegando solo valores? en el rango de la HojaMatriz tengo celdas con buscarV.. gracias!

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 6 horas 21 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: varias opciones

Pues en vez de pegar, hay que hacer un pegado especial, es decir,
en vez de Paste, será PasteSpecial

.PasteSpecial xlPasteValues

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

GUSTAVO (no verificado)
Imagen de visitante
He intentado incluir el

He intentado incluir el pegado especial con la opción trasponer pero no me sale que estoy haciendo mal??

With Worksheets(HojaBase)

        .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=True

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
A mano hay que hacerlo en dos

A mano hay que hacerlo en dos pasos: primero el pegado especial y luego la transposición. Prueba a hacerlo en dos pasos diferentes en la macro.