我正在工作表之间复制一些范围,但我不知道为什么只有在复制或粘贴工作表之前激活工作表时它才有效。这有效:
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”指定了工作表,为什么 VBA 需要激活工作表?谢谢
那是因为当Range(...)
and Cells(...)
方法不合格,它们在活动工作表.
激活
s.Range(单元格(2, 8), 单元格(lrow, 8)).复制
If s
不是活动工作表,您将要求s
一系列不属于它但属于另一个的单元格,active工作表。因为
Cells(2, 8) <==> ActiveSheet.Cells(2, 8)
Cells(lrow, 8) <==> ActiveSheet.Cells(lrow, 8)
为了避免这个麻烦,always限定您的范围和单元格:
s.Range(s.Cells(2, 8), s.Cells(lrow, 8)).Copy
这才是正确的做法;每当你发现自己使用类似的东西时Activate
and Select
,了解您很可能做错了什么。在良好的实践中,你几乎永远不需要使用这些东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)