• Los códigos de ejemplo se copiarán en una hoja de base de datos con el nombre Sheet2.

  • Cada vez que ejecute uno de los subs, las celdas se colocarán debajo de la última fila con datos o después de la última columna con datos en sheet2.

  • Para cada ejemplo hay una macro que hace una copia normal y otra que solo copia los valores.

  • Los subs de ejemplo utilizan las funciones siguientes (las macros no funcionarán sin las funciones).

Recuerde que solo hay 256 columnas en Excel

Sub CopyColumn()

Dim sourceRange As Range

Dim destrange As Range

Dim Lc As Integer

Lc = Lastcol(Sheets("Sheet2")) + 1

Set sourceRange = Sheets("Sheet1").Columns("A:A")

Set destrange = Sheets("Sheet2").Columns(Lc)

sourceRange.Copy destrange

End Sub

Sub CopyColumnValues()

Dim sourceRange As Range

Dim destrange As Range

Dim Lc As Integer

Lc = Lastcol(Sheets("Sheet2")) + 1

Set sourceRange = Sheets("Sheet1").Columns("A:A")

Set destrange = Sheets("Sheet2").Columns(Lc). _

Resize(, sourceRange.Columns.Count)

destrange.Value = sourceRange.Value

End Sub

Function LastRow(sh As Worksheet)

On Error Resume Next

LastRow = sh.Cells.Find(What:="*", _

After:=sh.Range("A1"), _

Lookat:=xlPart, _

LookIn:=xlFormulas, _

SearchOrder:=xlByRows, _

SearchDirection:=xlPrevious, _

MatchCase:=False).Row

On Error GoTo 0

End Function

Function Lastcol(sh As Worksheet)

On Error Resume Next

Lastcol = sh.Cells.Find(What:="*", _

After:=sh.Range("A1"), _

Lookat:=xlPart, _

LookIn:=xlFormulas, _

SearchOrder:=xlByColumns, _

SearchDirection:=xlPrevious, _

MatchCase:=False).Column

On Error GoTo 0

End Function