我是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是因为它是资产的主键,因此,总是有主键的。
提前感谢!
您正在计算从第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