工作表激活时调用AcceptAllChanges报错:Method 'AcceptAllChanges' of object '_Workbook' failed
问题分析与修复方案
我来帮你排查这个报错的原因哈!你遇到的 Method 'AcceptAllChanges' of object '_Workbook' failed 错误,主要是两个关键问题导致的:
- 参数使用错误:Workbook对象的
AcceptAllChanges方法里的Where参数,并不接受工作表对象(比如你传的ActiveSheet)。它的合法取值是XlWhere枚举值(像xlWhereAll、xlWhereNotInList这类),用来定义筛选更改的逻辑规则,不是用来指定某个工作表的。 - 方法选错了对象:你的需求是接受当前激活工作表的所有更改,但Workbook的
AcceptAllChanges是针对整个工作簿生效的。要单独处理单个工作表的更改,应该用Worksheet对象的AcceptAllChanges方法。
修复后的代码
Private Sub Worksheet_Activate() If ActiveWorkbook.MultiUserEditing Then ' 针对当前触发事件的工作表接受所有更改 Me.AcceptAllChanges End If End Sub
代码说明
- 这里用
Me指代当前触发Worksheet_Activate事件的工作表,直接调用它的AcceptAllChanges方法,就能精准处理该工作表的所有共享更改,不会再因为参数不匹配报错。 - 如果需要更精细化的筛选(比如只接受特定用户、特定时间的更改),可以给
Worksheet.AcceptAllChanges传入可选参数,示例如下:' 仅接受当前工作表中由"John"做出的所有更改 Me.AcceptAllChanges Who:="John"
内容的提问来源于stack exchange,提问作者Naz
相关产品推荐
相关产品推荐

