自动填充功能VBA

时间:2018-07-18 13:39:13

标签: excel vba excel-vba

我试图根据A列中有多少行从B1单元格中的第一个单元格自动填充。我对如何解决这个问题有任何想法。谢谢!

Set sourceRange = Worksheets("Sheet1").Range("A1:A20") 
Set fillRange = Worksheets("Sheet1").Range("B1:B20") 
sourceRange.AutoFill Destination:=fillRange

3 个答案:

答案 0 :(得分:2)

将代码更改为此:

Dim lr as Long
lr = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

Set sourceRange = WorkSheets("Sheet1").Range("A1:A" & lr)
Set fillRange = sourceRange.Resize(, sourceRange.Columns.Count + 1)
sourceRange.AutoFill Destination:=fillRange

编辑:

请注意,由于您的问题尚不清楚,如果您也想检测最后一列, 然后:

Dim lc as Long
lc = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column

将为您检测到它,您可以调整源范围,并将fillRange设置为最右边的相邻列

Set sourceRange = WorkSheets("Sheet1").Range(Cells(1,1), Cells(lr, lc))
Set fillRange = sourceRange.Resize(, sourceRange.Columns.Count + 1)
sourceRange.AutoFill Destination:=fillRange

会成功的!

答案 1 :(得分:2)

这里有一个猜测,就是不确定您要做什么。

Sub x()

Dim SourceRange As Range, fillRange As Range

With Worksheets("Sheet1")
    Set SourceRange = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
    Set fillRange = .Range("A1").Resize(SourceRange.Rows.Count, 2)
End With

SourceRange.AutoFill Destination:=fillRange

End Sub

答案 2 :(得分:0)

我发现规避此问题的最佳方法如下

Range("B1").Select
Selection.Copy
ActiveCell.Offset(0, -1).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range(Selection, "B1").Select
ActiveSheet.Paste

不会自动填充,但应该为您完成这项工作。