我正在学习避免使用.Select
,只是无法弄清楚如何重写我的.AutoFill
代码。
我有两个不同的工作表,一个是从中收集数据,然后将其粘贴到另一工作表中,并且我需要自动填充功能才能在第二个工作表上运行而不激活它。
这是我现在的工作代码,因为我Select
工作表和单元格“ A30”而有效
Selection.AutoFill Destination:=Range("A30:M30").Resize(NumRows1), Type:=xlFillDefault
这很好用,但是我不想激活工作表并选择单元格。
答案 0 :(得分:0)
为您提供一个起点,下面是一些在复制/粘贴后在另一张纸上使用自动填充的示例。
首先-将要使用的范围复制到其他工作表中
第二个-在要自动填充的工作表上选择范围
第三-使用Resize
时,该数字必须大于范围,因为选择范围时,焦点位于该范围的第一个单元格上。例如如果不更大
那么Range("A1:A10").resize(5).Select
的选定范围将是Range("A1:A5")
,因此不是自动填充操作。
Resize
的不同方式是:
Sheets("Sheet3").Range("A1:B10").AutoFill Destination:=Sheets("Sheet3").Range("A1:B10").Resize(20), Type:=xlFillDefault
或
Dim lr As Long
lr = Sheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
'the lr must be grater then the autofill range
Sheets("Sheet3").Range("A1:B10").AutoFill Destination:=Sheets("Sheet3").Range("A1:B10").Resize(lr), Type:=xlFillDefault
您也可以使用With
语句
With Sheets("Sheet3").Range("A1:B10")
.AutoFill Destination:=.Resize(.CurrentRegion.Rows.Count + .CurrentRegion.Rows.Count), Type:=xlFillDefault
End With
'the `.CurrentRegion.Rows.Count' doubles the range for the autofill, you can replace the second one with a specific number e.g. `.CurrentRegion.Rows.Count + 5'