网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月14日
漏签
0
天
vba吧
关注:
17,012
贴子:
66,420
看贴
图片
吧主推荐
游戏
66
回复贴,共
1
页
<<返回vba吧
>0< 加载中...
求助:selection.paste出现4605错误
只看楼主
收藏
回复
jetamour90
江湖少侠
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
当使用for循环调用range数组进行复制粘贴时,会随机地在循环进行到3或4次的时候报错。
注1:这样的错误不一定每次运行都发生。
注2:逐语句运行F8目前没有出现报错的情况。
求教错误发生的原因和解决办法!感谢!
DwcCC
人中龙凤
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
宏代码选手的通病!
先百度 关闭自动计算 和 屏幕刷新 看看
不行的话 就试着 舍弃 select selection 这类的代码
复制的话 cells.copy cells
熊猫办公
软件编程技术培训,领先的AI写作工具,原创文档内容生成,完整内容,3分钟直接获取。软件编程技术培训,支持智能问答/文案写作/整理大纲/笔记记录/脚本策划等各种需求,免费体验!
2025-03-14 20:38
广告
立即查看
xyundata
自成一派
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
粘贴前加个插入新段落试试
jetamour90
江湖少侠
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
问题以一种奇怪的方式解决了:
0. 如果增加on error resume next,4605错误出现的for周期后的循环也同样会报错。
1. 首先,由于我需要移动的段落可能包含图片和表格,无法使用range.text或range.formattedtext的方法代替range.copy/cut-paste实现段落的移动。
2. 其次,由于错误的随机性,将程序逻辑从cut→paste改成了copy→paste→if not err→delete。防止因为剪切段落未成功粘贴从而从文档消失。
3. 最后,解决方案如下:在模块开头声明kernel32.dll的Sleep函数,并在4605错误发生时用Sleep函数使程序待机一段时间后,重新尝试复制粘贴。代码后附。
----------------------------------------------------------------
出于不为人知的原因,我设置的等待时间越长,发生4605错误的for周期越少。最后当把Sleep时间设定为40000毫秒时,第一次错误仍会出现错误,但在Sleep后,重新尝试复制粘贴成功,且后面的循环不再报错。
猜测sub过程在执行时,剪贴板有时候会出错/崩溃。需要(一次性地)等待一段时间,使剪贴板修复/重启。这个时间不确定,在我电脑上大约是25~40秒之间。
----------------------------------------------------------------
附1:Sleep函数的声明代码
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
附2:修改后的sub过程代码
vArr(i).tAnsRng.Copy
vTmpRng.Paste
If Err.Number = 4605 Then
Debug.Print vArr(i).tQueInd & "出现错误4605"
Sleep 40000 ' 等待时间越少,错误且无法修复的次数越多
Err.Clear
vArr(i).tAnsRng.Copy
vTmpRng.Paste
If Err.Number = 4605 Then ' 等待后二次尝试
Err.Clear
Debug.Print "错误未修复"
Else
vArr(i).tAnsRng.Delete
End If
Else
vArr(i).tAnsRng.Delete
End If
----------------------------------------------------------------
感想1:吐了,以后从业务层面尽量避免复制粘贴吧。
感想2:跑复杂的宏好慢啊,是电脑配置跟不上了吗...?
tmtony
吧主
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1.会不会复制 的内容 太多,电脑也需要处理一段时间。需要等待,要加sleep
2.会不会在这个过程有其它 程序(或一些监控程序 对剪切板有处理动作)?
arpcn2
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
遇到了同样的问题,换了一种方法。把复制的文本保存到变量中,然后打出变量:
Dim TX As String
'………
Selection.Copy
TX = Selection.Text
Selection.TypeText Text:=TX
tobeBT
人海孤鸿
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
换成doevents试试,select范围太大的话计算机来不及运行完这个指令,vba已经开始下一句指令了
tobeBT
人海孤鸿
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
按F8逐句有就有时间完成指令
Excel搭档
人中龙凤
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
电脑配置问题,不确定是不是内存不够。
加延时应该可以
lxlzmh2002
人中龙凤
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
4605是对象的方法或属性不可用。哪个方法?paste方法,哪个对象?section对象。selection对象的贴粘动作为什么不可用? 瞅啥瞅我问你呢,程序执行到这为啥不能粘了?你动手手工粘一下不行吗?要么copy、cutt与paste之前的代码使copy效果消失了,要么所选对象不支持copy, paste. 这还有什么疑问吗
ISD_狮子座
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
只想问问,出错时,selection是什么内容?
壹统_天下
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我是打开word文件第一次运行到新建word文件,粘贴用selection.paste会报4605错误,然后点调试,再运行就成功了。
此时不关闭这个word文件,再继续运行都不会报错了,但是每次新打开就会报错,在selection.paste之前加一个MsgBox就不报错了,但是这样会有个弹窗也很不爽
聊吧草
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我这边也遇到这个问题,试了楼上说的msgbox弹窗,确实可以。我尝试了另一个办法也可以实现,doevents可以强势刷新系统。用法加上on error resume next,粘贴指令后面加一个判断,如果err.number<>0,则进入循环执行三行的doevents,然后再次粘贴,并执行err.clear,亲测有效。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示