This script works fine when I'm viewing the "Temp" sheet. But when I'm in another sheet then the copy command fails.. It gives a "Application-defined or object-defined error"
Sheets("Temp").Range(Cells(1), Cells(1).End(xlDown)).Copy
Sheets("Overview").Range("C40").PasteSpecial
I can use this script instead, but then I have problems with pasting it
Sheets("Temp").Columns(1).Copy
Sheets("Overview").Range("C40").PasteSpecial
- I dont want to activate the "Temp" sheet to get this
What else can I do
I encountered a problem like this myself: I was trying to search through a separate worksheet to see if the color of a cell matched the color of a cell in a list and return a string value: if you are using .Cells(row, column), you only need this: Sheets("sheetname").Cells(row, column) to reference that range of cells.
I was looping through a block of 500 cells and it works surprisingly quickly for me.
I have not tried this with .Copy, but I would assume it would work the same way.
Your issue is that the because the
Cell
references inside theRange
's are unqualified, they refer to a default sheet, which may not be the sheet you intend. For standard modules, theThisWorkbook
module, custom classes and user form modules, the defeault is theActiveSheet
. ForWorksheet
code behind modules, it's that worksheet.For modules other than worksheet code behind modules, your code is actually saying
For worksheet code behind modules, your code is actually saying
In either case, the solution is the same: fully qualify the range references with the required workbook:
This will do, I don't like to use (xlDown) in case a cell is empty.
Or if you want to just use Columns...