我在床单之间复制一些范围,而我不知道为什么只在复制或粘贴它们之前激活表格时它才能起作用。这有效:
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"one_answers" d"指定了VBA需要激活纸板的纸张?谢谢
那是因为当Range(...)
和Cells(...)
方法不合格时,它们在活动工作表上运行。
s.活化
s.range(单元格(2,8),单元格(Lrow,8))。复制
如果s
不是活动表,则您将从s
请求不属于它的单元格,而是向另一个单元格,而是另一个单元格, Active 工作表。因为
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
之类的东西时,请了解您最明显地做错了什么。在良好的练习中,您几乎不需要使用这些东西。