如何,从共享工作簿中删除所有其他用户,Excel VBA?



我有共享的工作簿(Office 2016),我使用下面的代码{从这个共享的工作簿中删除所有其他用户}但是每次运行时只删除一个用户,我必须多次运行此代码以删除所有用户(除了我)。我应该重复的代码行工作或修改它。

注意:尽管代码中有if语句,如果我输入结束If它给出了错误!!

Sub Remove_Other_Users_from_Shared_Workbook()
Dim UsrList()
UsrList = ThisWorkbook.UserStatus
For i = 1 To UBound(UsrList, 1)
If Not (UsrList(i, 1) = Application.UserName) Then ThisWorkbook.RemoveUser (i)
Next

End Sub

当您打算从数组中删除项时,通常建议向后循环数组,因为每次删除都会将数组其余部分的索引向上移动1,这会导致问题:

Sub Remove_Other_Users_from_Shared_Workbook()
Dim UsrList()
UsrList = ThisWorkbook.UserStatus
For i = UBound(UsrList, 1) To 1 Step -1
If UsrList(i, 1) <> Application.UserName Then ThisWorkbook.RemoveUser i
Next

End Sub

您不能将End If添加到If语句中,因为您在Then之后有一行代码,这使其成为一行语句。如果您想要放置End If,则必须将ThisWorkbook.RemoveUser i移动到下一行,如下所示:

Sub Remove_Other_Users_from_Shared_Workbook()
Dim UsrList()
UsrList = ThisWorkbook.UserStatus
For i = UBound(UsrList, 1) To 1 Step -1
If UsrList(i, 1) <> Application.UserName Then 
ThisWorkbook.RemoveUser i
End If
Next

End Sub

注意:如果你在Then分支中只有一行代码,那么你现在的代码是完美的。

相关内容

最新更新