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 个单元格并仅突出显示差异

停止 excel(或 VBA)四舍五入的小数

vba中的excel组合和选项

使用 python 记录未保存的 Excel 数据或使用 vba 自动保存

如何让VBA自动响应word或excel打开文件时自动出现的消息框

excel vba中将公式转为文本或数值公式