我有一张4张Excel的工作簿 .
-
主表
-
test_1
-
test_2
-
test_3
我想将数据从Master Sheet移动到所有其他工作表,我通过创建宏来完成 . 每日主表单数据将会增加,因此我如何在宏中容纳此更改 .
我已粘贴以下现有代码:
Sub sbCopyRangeToAnotherSheet()
Sheets("Master").Range("B10:M1628").Copy
Sheets("test_1").Activate
Range("B9").Select
ActiveSheet.Paste
Application.CutCopyMode = Flase
End Sub
Sub sbCopyRangeToCRP2()
Sheets("Master").Range("B10:M1628").Copy
Sheets("test_2").Activate
Range("B9").Select
ActiveSheet.Paste
Application.CutCopyMode = Flase
End Sub
Sub sbCopyRangeToCRP3()
Sheets("Master").Range("B10:M1628").Copy
Sheets("test_3").Activate
Range("B9").Select
ActiveSheet.Paste
Application.CutCopyMode = Flase
End Sub
在上面的代码中,我提到了Master Sheet的硬编码范围值,它从B10开始到M1628结束 .
前进行数增加**(B10范围将保持)**并且我不想硬编码范围 . 我怎么能做到这一点?
4 回答
我建议将这3个子组合成一个可以通过将工作表作为参数重复使用的子组件:
然后你可以为任何工作表名称运行此子目录
我建议要么使用Worksheet对象的
UsedRange
属性,或者在工作表上定义命名范围,随着工作表上的数据增长自动扩展,如:
=OFFSET($A$1,0,0,COUNTA($A:$A),1)
您可以使用此循环宏
我认为复制数据的最佳方法是使用一个数字填充的数组 .
创建确切的数组
从主表中填写数据
粘贴数据 .
在这种情况下,你不必担心新行,因为你使用dinamic数组 . 看下面的一些例子 .