VBA Runtime Error 1004 "Application-defined or Object-defined error" when Selecting Range
excel, vba
Solution
Perhaps your code is behind Sheet1, so when you change the focus to Sheet2 the objects cannot be found? If that's the case, simply specifying your target worksheet might help:
Sheets("Sheet1").Range("C21").Select
I'm not very familiar with how Select works because I try to avoid it as much as possible :-). You can define and manipulate ranges without selecting them. Also it's a good idea to be explicit about everything you reference. That way, you don't lose track if you go from one sheet or workbook to another. Try this:
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
Problem
I am having an issue with a Error 1004 "Application-defined or Object-defined error" when selecting a range. I am still able to select rows (ie `Rows("21:21").select`) and to select ranges in other sheets of the same workbook. I do not believe the error is in the code. Maybe its some setting I am unaware of? I have used the exact same code many times before but for some reason I cannot make it function in this sub (I have commented where the error occurs)... ``` 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 ``` I need to get all fancy in my copying as the amount of rows will change frequently. Again, the below code has been used before without error... but not in this instance. ``` 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 ```