Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始
Posted
技术标签:
【中文标题】Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始【英文标题】:Excel or VBA Issue? Range.Autofill Method sometimes starts where I don't want it to 【发布时间】:2018-11-30 22:37:21 【问题描述】:我是 VBA 新手,我正在尝试制作一个表单控制按钮,当单击该按钮时,它会自动填充一个非常复杂的公式,直到它到达动态数据透视表的末尾。数据透视表正在从另一个名为“数据导入”的工作表/选项卡中获取数据,其中包括资产及其各自的折旧信息。
因此,当我的“数据导入”选项卡可能有 100 个或更多资产时,这很有效,但当资产少于该值时,它会以某种方式开始应用上面的公式,我希望范围/自动填充开始。详细地说,如果我的数据透视表中有 7 个资产(7 行),并且我希望公式自动填充范围(O15:O400),它会在(O5: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 列是因为它是资产的主键,因此总会有主键。
提前致谢!
【问题讨论】:
见this answer。你应该完全限定你对Range
的调用。
【参考方案1】:
您正在计算从第 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
【讨论】:
就是这样!我对代码所做的唯一不同之处是添加“+15”- Range(“O16”).AutoFill Destination:=Range(“O16:O” & (k + 15))以上是关于Excel 或 VBA 问题? Range.Autofill 方法有时会从我不想要的地方开始的主要内容,如果未能解决你的问题,请参考以下文章
Excel 公式或规则或 vba 比较 2 个单元格并仅突出显示差异
使用 python 记录未保存的 Excel 数据或使用 vba 自动保存