如何自动填充其他工作表而不选择它?

时间:2019-05-08 13:20:00

标签: excel vba

我正在学习避免使用.Select,只是无法弄清楚如何重写我的.AutoFill代码。

我有两个不同的工作表,一个是从中收集数据,然后将其粘贴到另一工作表中,并且我需要自动填充功能才能在第二个工作表上运行而不激活它。

这是我现在的工作代码,因为我Select工作表和单元格“ A30”而有效

Selection.AutoFill Destination:=Range("A30:M30").Resize(NumRows1), Type:=xlFillDefault

这很好用,但是我不想激活工作表并选择单元格。

1 个答案:

答案 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'