多次正常运行后触发Run time error 1004的原因求助
InkPicture粘贴Excel单元格触发Run-time error 1004的成因
问题说明
开发功能时,将InkPicture区域绘制的内容保存至指定单元格,代码初期可正常运行数次,但一段时间后弹出Run time error 1004(提示“Microsoft Excel无法粘贴数据”),错误定位在sh.Paste代码行。
涉及代码
Private Sub CommandButton1_Click() Dim sh As Worksheet Dim c As Range Set sh = ThisWorkbook.Sheets("Database") For Each c In Range("J2:J20") If c.Value = "" Then c.Value = Now() InkPicture1.Ink.ClipboardCopy c.Select sh.Paste MsgBox "The signature has been saved!", vbOKOnly + vbInformation, "Signature" Exit For End If Next c End Sub
可能成因
- 剪贴板状态异常:
Ink.ClipboardCopy依赖系统剪贴板存储墨迹数据,多次操作后剪贴板可能未被正确清空、释放,出现数据残留或损坏,导致Excel无法读取有效粘贴内容。 - 粘贴上下文冲突:代码用
c.Select切换选中单元格,但Paste操作依赖当前活动工作表和选中状态,多次循环或后台交互可能导致活动上下文混乱,粘贴目标与实际上下文不匹配。 - 对象资源泄漏:重复执行剪贴板操作和工作表交互,未及时释放Range、Worksheet等对象资源,长期运行后Excel对象资源耗尽,引发粘贴失败。
- 墨迹格式兼容性问题:多次复制后,InkPicture的剪贴板数据格式可能出现偏移,Excel无法识别或解析该格式,导致粘贴报错。
内容的提问来源于stack exchange,提问作者Sabo Alex
相关产品推荐
相关产品推荐

