EXCEL VBA,从不活动的工作表中获取范围。

EXCEL VBA,从不活动的工作表中获取范围。

当我查看“临时”工作表时,这个脚本工作得很好。但是当我在另一个工作表中时,复制命令就失败了。它提供了一个“应用程序定义的或对象定义的错误”。

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
  • 我不想激活“临时”表来获取这个

我还能做什么


皈依舞
浏览 1148回答 3
3回答

MMMHUHU

你的问题是因为Cell中的引用。Range是不合格的,它们指的是默认工作表,该工作表可能不是您想要的工作表。ThisWorkbook模块、自定义类和用户表单模块。ActiveSheet..为Worksheet模块后面的代码,就是那个工作表。对于模块后面的工作表代码以外的模块,您的代码实际上是这样说的。Sheets("Temp").Range(ActiveSheet.Cells(1), ActiveSheet.Cells(1).End(xlDown)).Copy Sheets("Overview").Range("C40").PasteSpecial对于模块后面的工作表代码,您的代码实际上是这样说的。Sheets("Temp").Range(Me.Cells(1), Me.Cells(1).End(xlDown)).Copy Sheets("Overview").Range("C40").PasteSpecial在这两种情况下,解决方案都是相同的:使用所需的工作簿完全限定范围引用:Dim sh1 As WorksheetDim sh2 As WorksheetSet sh1 = ActiveWorkbook.Sheets("Temp")Set sh2 = ActiveWorkbook.Sheets("Overview")With sh1     .Range(.Cells(1,1), .Cells(1,1).End(xlDown)).CopyEnd Withsh2.Range("C40").PasteSpecial

潇潇雨雨

我自己也遇到了这样的问题:我试图在一个单独的工作表中搜索一个单元格的颜色是否与列表中的一个单元格的颜色相匹配,并返回一个字符串值:如果您使用.Cells(行、列),您只需要这样做:Sheets(“Sheetname”).Cells(行,列)引用该范围的单元格。我在一个由500个细胞组成的街区循环着,它对我来说运行的速度惊人的快。我还没有尝试过这个.Copy,但是我假设它会以同样的方式工作。

波斯汪

这样就行了,我不喜欢在单元格为空的情况下使用(Xldown)。Dim lRow As LonglRow = Sheets("Temp").Cells(Cells.Rows.Count, "A").End(xlUp).RowWith Sheets("Temp")      .Range("A1:A" & lRow).Copy Sheets("Overview").Range("C40")End With或者如果你只想用列.。Sheets("Temp").Columns(1).SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("Overview").Range("C40")
打开App,查看更多内容
随时随地看视频慕课网APP