修改
这是因为工作簿已经腐败。
这似乎不值得回答我自己的问题,但在谷歌搜索非常困难所以我将其留在这里以防万一其他人有相同的问题和机会。
原始问题
我有一个Sub保护工作表并隐藏列,或者反过来取决于LockSheet是True还是False。这个想法是某些用户可以通过在对话框中输入密码来解锁工作簿的某些部分,并且锁定也会在关闭之前自动发生。 它工作正常,除了我只想保护某些工作表,我的代码似乎就是这样做的。除非我打开工作簿,否则我会被告知整个工作簿都受到保护。
任何人都知道为什么会发生这种情况?我从来没有根据我的知识保护工作簿,并尝试通过代码取消保护,但在打开它时仍然会收到密码提示......
为了理解:在下面的代码中,每个“Item”在“SheetCombinationsToProtect”中是一个具有工作表名称和列表列表的结构。
Private Sub PerformOperationOnSheetsAndColumns(SheetCombinationsToProtect As Collection, LockSheet As Boolean)
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim ws As Worksheet
Dim wsName As String
Dim wsColumns() As String
Dim Combination As String
Dim Password As String
Password = GetPassword()
For Each Item In SheetCombinationsToProtect
Combination = Item
wsName = GetSheetNameFromCombination(Combination)
wsColumns = GetColumnsFromCombination(Combination)
Set ws = wb.Sheets(wsName)
ws.Activate
ws.Unprotect (Password)
For Each Col In wsColumns
ws.Columns(ws.Range(Col & 1).Column).EntireColumn.Hidden = LockSheet
Next Col
If LockSheet = True Then
ws.Protect (Password)
Else
ws.Activate
ws.Cells(1, 1).Show
End If
Next Item
If LockSheet = True Then
wb.Sheets("Order Entry").Activate
End If
End Sub
答案 0 :(得分:0)
问题是工作簿本身已损坏。这显然是在极少数情况下发生的,即使没有宏。
我将宏移植到以前版本的工作簿中,并且一切正常。