我是VBA的新手,我找不到自己想要的答案。我的代码其余部分都可以正常工作,但是在自动填充方面,我似乎无法理解。我有一个单元格,我想自动填充到下面的单元格中。我知道这是一个非常基本的问题,但是需要任何帮助!这是我的代码:
Selection.AutoFill目标:=范围(Cells.ActiveCell.Offset(1,0),类型:= _ xlFillDefault
答案 0 :(得分:1)
您可以使用调整大小
Option Explicit
Sub Test()
Selection.AutoFill Destination:=ActiveCell.Resize(2, 1), Type:=xlFillDefault
End Sub
答案 1 :(得分:1)
.AutoFill被高估了,.FillDown / .FillRight和.DataSeries通常都是更好的方法,并且用相对内容一次填充所有内容始终是公式或常量的一种选择。
Selection.filldown 'ctrl+D is faster
'or,
Selection.cells(1).resize(2, 1).filldown
...
Selection.cells(1).resize(2, 1) = Selection.cells(1).formula
...
Selection.cells(1).resize(2, 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
...
'only if you're feeling lucky
selection.flashfill
您还没有提供足够的信息来提供确定的答案,但是以上所有方法都可以替代名为.AutoFill的猜测游戏,其类型为Type:= xlFillDefaultDefault。
答案 2 :(得分:1)
尝试这些测试。 A列的代码回答了您的原始问题。
Option Explicit
Sub AutofillTest()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim aRng1 As Range, aRng2 As Range
'Autofill beginnining with only one cell as a "seed"
ws.Range("a:d").Clear
Set aRng1 = ws.Range("a1:a1")
aRng1 = 1 'The "seed" cell
Set aRng2 = aRng1.Offset(1, 0)
aRng1.AutoFill Destination:=Range(aRng1, aRng2), Type:=xlFillSeries
'More fun tests
ws.Range("b1:b1") = 1
ws.Range("c1:c1") = 1
ws.Range("d1:d1") = CDate("5/1/2018")
ws.Range("b1:b1").AutoFill Destination:=Range("b1:b5"), Type:=xlFillSeries 'List of numbers
ws.Range("c1:c1").AutoFill Destination:=Range("c1:c5"), Type:=xlFillDefault 'Copy of one number
ws.Range("d1:d1").AutoFill Destination:=Range("d1:d5"), Type:=xlFillDefault 'List of dates
End Sub