【发布时间】:2017-12-03 19:00:39
【问题描述】:
我正在尝试使用公式添加 2 列并自动填充到最后一行,但我得到了一个
范围类的自动填充方法失败
运行代码时。它在以Activecell.Autofill 开头的行处中断
Sub addColumnsandChange()
Dim LastRow As Integer
'Finds the value of the last row
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Selection.EntireColumn.Insert
Selection.EntireColumn.Insert
ActiveCell.FormulaR1C1 = "YoY% Change"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "3 Year CAGR"
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IFERROR((RC[-1]-RC[2])/RC[2],"""")"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IFERROR((RC[-2]/RC[2])^(1/3)-1,"""")"
ActiveCell.Offset(0, -1).Range("A1:B1").Select
ActiveCell.AutoFill Range("A1:B" & LastRow), Type:=xlFillDefault
Range("A1:B" & LastRow).Select
End Sub
自从合并 LastRow 变量后,我无法运行代码。
相反,它返回一个运行时错误
范围类的自动填充方法失败
调试时。我应该如何自动填充和结束代码?
【问题讨论】:
-
启动宏时选择了哪个单元格? (如果你使用
Selection并且没有在问题中指定选择了什么,那么人们很难调试。)另外,LastRow崩溃时的值是多少? (即哪一行包含活动工作表 A 列中最后使用的单元格?) -
我的猜测(这是一个非常疯狂的猜测)是你正在尝试做
ActiveCell.Range("A1:B1").AutoFill ActiveCell.Resize(LastRow - 1, 2), Type:=xlFillDefault,但这是一个非常糟糕这样做的方式,如果您告诉我们您要实现的目标(也许将您的工作表的屏幕截图添加到问题中),我们也许可以帮助您解决问题,使其更加健壮。 -
我认为我说您一次只能在一种意义上自动填充,即列然后行,反之亦然。尝试两次:一次“A1:A?”然后是列。