Estoy teniendo un problema con un Error 1004 "Error definido por la aplicación o por el objeto" al seleccionar un rango.
Todavía puedo seleccionar filas (es decir, Filas("21:21").select
) y seleccionar rangos en otras hojas del mismo libro. No creo que el error esté en el código. ¿Quizás es alguna configuración que desconozco?
He usado exactamente el mismo código muchas veces antes pero por alguna razón no puedo hacer que funcione en este subprograma (he comentado donde se produce el error)...
Sub CopySheet1_to_PasteSheet2()
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
'>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
'Copy Data
Range("A21:C" & CLastFundRow).Select
Selection.Copy
'Paste Data Values
Sheets("PalTrakExport PortfolioAIdName").Select
Range("A21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Bring back to top of sheet for consistancy
Range("A21").Select
Range("A1").Select
End Sub
Tengo que ponerme muy fino en el copiado ya que la cantidad de filas va a cambiar frecuentemente. Una vez más, el código de abajo se ha utilizado antes sin error ... pero no en este caso.
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
'>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
¿Quizás su código está detrás de la Hoja1, por lo que cuando cambia el foco a la Hoja2 los objetos no se encuentran? Si ese es el caso, simplemente especificando su hoja de trabajo de destino podría ayudar:
Sheets("Sheet1").Range("C21").Select
No estoy muy familiarizado con el funcionamiento de Select porque intento evitarlo en la medida de lo posible :-). Puedes definir y manipular rangos sin seleccionarlos. También es una buena idea ser explícito con todo lo que referencies. De este modo, no perderás la pista si pasas de una hoja o libro de trabajo a otro. Pruebe esto:
Option Explicit
Sub CopySheet1_to_PasteSheet2()
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
Dim wksSource As Worksheet, wksDest As Worksheet
Dim rngStart As Range, rngSource As Range, rngDest As Range
Set wksSource = ActiveWorkbook.Sheets("Sheet1")
Set wksDest = ActiveWorkbook.Sheets("Sheet2")
'Finds last row of content
CLastFundRow = wksSource.Range("C21").End(xlDown).Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
'Copy Data
Set rngSource = wksSource.Range("A2:C" & CLastFundRow)
'Paste Data Values
Set rngDest = wksDest.Range("A21")
rngSource.Copy
rngDest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Bring back to top of sheet for consistancy
wksDest.Range("A1").Select
End Sub
Es un poco tarde pero puede ser útil para futuras referencias. Acabo de tener el mismo problema y creo que es porque la macro se registra en el nivel de la hoja de cálculo. Haga clic con el botón derecho del ratón en el nodo de módulos en la ventana del proyecto VBA, haga clic en insertar módulo y luego pegue su macro en el nuevo módulo (asegúrese de eliminar la grabada en el nivel de la hoja de cálculo).
Espero que esto ayude.
Algunas operaciones en Excel están limitadas por la memoria disponible. Si se repite el mismo proceso una y otra vez puede producirse un desbordamiento de memoria y Excel no podrá repetirlo más. Esto me ocurrió al intentar crear varias hojas en el mismo libro.