自动填充到相邻单元格

时间:2018-07-19 19:12:38

标签: excel vba excel-vba

我是VBA的新手,我找不到自己想要的答案。我的代码其余部分都可以正常工作,但是在自动填充方面,我似乎无法理解。我有一个单元格,我想自动填充到下面的单元格中。我知道这是一个非常基本的问题,但是需要任何帮助!这是我的代码:

Selection.AutoFill目标:=范围(Cells.ActiveCell.Offset(1,0),类型:= _         xlFillDefault

3 个答案:

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