VBA实现粘贴链接功能时出现运行时错误'438'如何解决?
VBA粘贴链接触发运行时错误'438'的解决方法
错误原因
运行时错误'438'本质是「对象不支持该属性或方法」,你的代码问题在于:ActiveCell 是Range类型对象,Range对象本身没有Paste方法,Paste是Worksheet对象的方法,所以调用ActiveCell.Paste Link:=True会直接触发接口不匹配报错。
修复方案
方案1:保留原有逻辑仅修正粘贴语句
直接调用工作表的Paste方法,指定粘贴目标和链接参数即可:
Private Sub reportcopy(InRange As Range) Dim pasteStart As Range InRange.Copy ' 直接定位粘贴起始位置,无需选中单元格 Set pasteStart = Sheets("Report").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) ' 调用Report工作表的Paste方法,指定链接参数 Sheets("Report").Paste Destination:=pasteStart, Link:=True Application.CutCopyMode = False End Sub
主调用过程无需修改,保持原有逻辑即可:
Sub xyz() For r = 6 To 84 Step 39 For c = 3 To 36 Step 3 reportcopy Sheets("Sheet1").Cells(r, c).Resize(31, 3) Next c Next r End Sub
注意事项
- 运行前请确认工作簿中存在
Report工作表,否则会触发下标越界错误 - 如果
Report工作表处于保护状态,需要先解除保护再执行粘贴操作
内容的提问来源于stack exchange,提问作者Nathan Fleischman
相关产品推荐
相关产品推荐

