Excel VBA,从一个不活动的工作表获取范围

当我查看“Temp”工作表时,此脚本正常工作。 但是,当我在另一个工作表中,则复制命令失败。它提供了一个“应用程序定义或对象定义的错误”

Sheets("Temp").Range(Cells(1), Cells(1).End(xlDown)).Copy Sheets("Overview").Range("C40").PasteSpecial 

我可以使用这个脚本,但是我有粘贴它的问题

 Sheets("Temp").Columns(1).Copy Sheets("Overview").Range("C40").PasteSpecial 
  • 我不想激活“温度”表来得到这个

我还可以做些什么

你的问题是,因为在范围内的Cell引用是不合格的,他们引用默认的ActiveSheet 。 所以你的代码实际上是在说

 Sheets("Temp").Range(ActiveSheet.Cells(1), ActiveSheet.Cells(1).End(xlDown)).Copy Sheets("Overview").Range("C40").PasteSpecial 

这是一个更好的形成版本

 Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = ActiveWorkbook.Sheets("Temp") Set sh2 = ActiveWorkbook.Sheets("Overview") With sh1 .Range(.Cells(1,1), .Cells(1,1).End(xlDown)).Copy End With sh2.Range("C40").PasteSpecial 

我自己也遇到过这样的问题:我试图通过单独的工作表来查找单元格的颜色是否与列表中单元格的颜色相匹配,并返回一个string值:如果使用的是.Cells(row,column ),您只需要:表格(“sheetname”)。单元格(行,列)引用该单元格的范围。

我正在循环500个单元的块,它对我来说惊人地快速工作。

我没有用.Copy试过,但是我会认为它会以同样的方式工作。