如何在工作表未受保护时调试“工作表保护”导致的运行时错误1004

时间:2016-11-11 12:21:03

标签: vba excel-vba excel-2010 excel

TL; DR 使工作表可见会因工作表保护而产生错误,即使工作表不受保护!

散文中的问题: 我在excel中创建了一个应用程序,它使用单独的工作表作为用户界面。在顶部,我有一个对象列表,用作导航应用程序的按钮。这大部分工作都符合预期,但有时由于工作表保护而产生错误,尽管工作表没有受到保护。

按钮调用的代码

Public Sub HideAllOtherSheets(targetSheet As Worksheet)
Dim Wkb As Workbook
Dim wks As Worksheet
Set Wkb = ThisWorkbook

'Ensure target sheet is visible
For Each wks In Wkb.Worksheets
    If wks.Name = targetSheet.Name Then
        wks.Visible = xlSheetVisible
    End If
Next wks

'Now make all others invisible
For Each wks In Wkb.Worksheets
    If wks.Name <> targetSheet.Name Then
        wks.Visible = xlSheetVeryHidden
    End If
Next wks

Set Wkb = Nothing
End Sub

错误: 运行时错误1004发生在第一个wks.Visible = xlSheetVisible的行For ... Each上,但不会一致地发生。

最奇怪的是......如果我再调试并按下F5,它会继续运行而不会重复出现错误消息!

我正在尝试使用.Protect UserInterfaceOnly:=True,但又重新使用了该代码。自从试验以来,我遇到了这个问题。

我尝试了什么:

  1. 我在使工作表可见的行之前的行中插入了直接.Unprotect语句,但错误仍然存​​在。据我所知,工作表被锁定甚至不应该。
  2. 插入的代码可在打开工作簿时解锁所有工作表。错误仍然存​​在。

0 个答案:

没有答案