Excel中能否将AutoFill目标区域的O52替换为cell_range?
Excel VBA: 替换AutoFill目标区域为Range变量的解决方案
这操作完全可行,你报错是因为语法用错了——cell_range是Range对象,不能直接和字符串拼接成Range引用。按下面的方式修改即可:
修正后的代码
' 显式声明变量(推荐写法) Dim cell_range As Range Set cell_range = ActiveCell ' 直接给O18写入公式,跳过冗余的Select操作 Range("O18").FormulaR1C1 = "=iferror(RC[-4]*RC[-3]-RC[-4]*RC[-3]*RC[-1]%,0)" ' 组合Range对象指定AutoFill目标区域 ' 此处默认填充到cell_range所在行的O列单元格 Range("O18").AutoFill Destination:=Range(Range("O18"), cell_range.EntireRow.Columns("O")), Type:=xlFillDefault
注意事项
- 如果
cell_range本身就在O列,代码可简化为:Range("O18").AutoFill Destination:=Range("O18", cell_range), Type:=xlFillDefault - 尽量避免使用
Select和Selection,直接操作Range对象不仅效率更高,还能避免因选区意外变化导致的错误。 - 必须保证
cell_range的行号≥18,否则目标区域小于源区域,AutoFill会触发错误。
内容的提问来源于stack exchange,提问作者sita thapa
相关产品推荐
相关产品推荐

