我正在复制纸张之间的某些范围,我不知道为什么只有在我复制或粘贴纸张之前激活纸张时它才有效。这有效:
s.Activate
s.Range(Cells(2, 8), Cells(lrow, 8)).Copy
d.Activate
d.Range(Cells(2, 3), Cells(lrow, 3)).PasteSpecial xlPasteValues
这不是:
s.Range(Cells(2, 8), Cells(lrow, 8)).Copy
d.Range(Cells(2, 3), Cells(lrow, 3)).PasteSpecial xlPasteValues
如果我已经使用变量" s"和" d"?感谢
答案 0 :(得分:1)
这是因为当Range(...)
和Cells(...)
方法不合格时,它们会在 Active Worksheet 上运行。
s.Activate
s.Range(细胞(2,8),细胞(lrow,8))。复制
如果s
不是活动工作表,您将从s
请求一系列不属于它的单元格,而是另一个活动工作表。因为
Cells(2, 8) <==> ActiveSheet.Cells(2, 8)
Cells(lrow, 8) <==> ActiveSheet.Cells(lrow, 8)
为了避免这种麻烦,总是限定您的范围和单元格:
s.Range(s.Cells(2, 8), s.Cells(lrow, 8)).Copy
这是正确的方法;每当您发现自己使用Activate
和Select
等内容时,请了解您最有可能做错事。在良好的实践中,你几乎不需要使用这些东西。