You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel VBA一次性移除共享工作簿中除自己外的所有其他用户

共享工作簿批量移除其他用户VBA代码修正方案

问题根因

现有代码单次运行无法删除全部其他用户,是因为正向遍历用户索引时产生了偏移:当你移除第i位用户后,原本排在i之后的所有用户索引都会自动减1,后续循环会直接跳过已前移的用户,因此只能删除部分用户。不需要重复编写代码行,仅修改遍历逻辑即可实现一次性清理需求。
你提到的If语句添加End If报错属于VBA语法规则:当前你用的是单行If语法,条件判断和执行语句放在同一行时,不需要配套End If,强制添加会触发语法错误。如果要拆成多行写法才需要搭配End If使用,两种写法都合法,按需选择即可。

修正后代码

将循环修改为倒序遍历,从最后一位用户往第一位遍历,删除靠后用户不会影响还未遍历的靠前索引的正确性,单次运行即可清理所有其他用户:

Sub Remove_Other_Users_from_Shared_Workbook()
    Dim UsrList()
    UsrList = ThisWorkbook.UserStatus
    ' 改为倒序遍历,避免索引偏移导致漏删
    For i = UBound(UsrList, 1) To 1 Step -1
        If Not (UsrList(i, 1) = Application.UserName) Then ThisWorkbook.RemoveUser (i)
    Next
End Sub

内容的提问来源于stack exchange,提问作者Leedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:04