在MS Project VBA中调用Excel Autofill语法失效问题排查
问题:MS Project VBA操作Excel时AutoFill无效果
我在Excel中录制的宏可正常运行,代码如下:
'Setting Planned Work Range("C14").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-1]-R[-3]C" Range("C14").AutoFill Destination:=Range("C14:M14")
但在MS Project VBA中编写的操作Excel的代码,仅公式写入步骤正常,最后一行AutoFill无效果,已确认Excel引用正常:
Dim PTOutput As Excel.Worksheet 'Step6: Setting Planned Work PTOutput.Range("C14").Select PTOutput.Range("C14").FormulaR1C1 = "=RC[-1]-R[-3]C" PTOutput.Range("C14").AutoFill Destination:=PTOutput.Range("C14:M14")
解决方案
跨应用程序(如Project操作Excel)时,Select方法依赖Excel窗口的激活状态,容易导致操作失效。直接通过工作表对象操作单元格,同时明确指定填充类型,即可解决问题:
Dim PTOutput As Excel.Worksheet 'Step6: Setting Planned Work With PTOutput '直接写入公式,无需Select .Range("C14").FormulaR1C1 = "=RC[-1]-R[-3]C" '明确指定填充目标和类型 .Range("C14").AutoFill Destination:=.Range("C14:M14"), Type:=xlFillDefault End With
说明
- 移除
Select操作:跨应用时,选中单元格的操作无法保证Excel处于激活状态,直接操作单元格对象更可靠。 - 指定
AutoFill类型:添加Type:=xlFillDefault参数,确保按默认规则填充(和Excel录制宏的行为一致),避免因上下文缺失导致填充失败。
内容的提问来源于stack exchange,提问作者Muhammad Mateen
相关产品推荐
相关产品推荐

