Excel或VBA问题? Range.Autofill方法有时在我不希望的地方开始

时间:2018-11-30 22:37:22

标签: excel vba autofill

我是VBA的新手,我正在尝试制作一个“表单控制按钮”,该按钮在单击时会自动在列中自动填充一个非常复杂的公式,直到到达动态数据透视表的末尾为止。数据透视表从另一个称为“数据导入”的工作表/标签中获取数据,该工作表/标签包含资产及其各自的折旧信息。

因此,当我的“数据导入”选项卡上可能包含100个或更多资产时,此方法可以很好地工作,但是当数量少于100个时,它将以某种方式在我希望范围/自动填充开始的地方开始应用公式。详细地说,如果我在数据透视表中有7个资产(7行),并且希望公式自动填充范围(O15:O400),它将开始在(O5:O400)<-也许是O400处自动填充。

代码:

Sub AutoFill()
  Dim k As Long

'To get a number rows taken up by assets
  k = Range("A15", Range("A15").End(xlDown)).Rows.Count
'To apply AutoFill at specified range
  Range("O15").AutoFill Destination:=Range("O15:O" & k)

End Sub

我使用A列是因为它是资产的主键,因此,总会有主键。

谢谢!

1 个答案:

答案 0 :(得分:2)

您要计算的范围是从第15行开始的范围内的单元格数量,然后期望该计数是最后一行。

如果End排在第30行,则Rows.Count将为16,而您填充的内容只会填充O15:O16

如果最后一行为25,则计数为11,要填充的范围为O11:O15

Sub AutoFill()
  Dim k As Long
  With Worksheet("Sheet1") 'Change to your sheet
      'To get a number rows taken up by assets
      k = .Range("A15").End(xlDown).Row
      'To apply AutoFill at specified range
      .Range("O15").AutoFill Destination:=.Range("O15:O" & k)
  End With
End Sub