VBA复制和粘贴仅在我激活工作表的情况下工作



我在床单之间复制一些范围,而我不知道为什么只在复制或粘贴它们之前激活表格时它才能起作用。这有效:

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

这是正确的方法;每当您发现自己使用ActivateSelect之类的东西时,请了解您最明显地做错了什么。在良好的练习中,您几乎不需要使用这些东西。

相关内容

  • 没有找到相关文章

最新更新