方法可见的工作表失败,但代码成功运行

以下行:

ThisWorkbook.Sheets(vSheets(i, 1)).Visible = xlSheetVisible 

生成错误:

 Run-time error '-2147417848 (80010108)': Method 'Visible' of object '_Worksheet' failed 

但是,如果我在debugging器中单击播放,执行完成没有问题。 所以该行导致我的代码进入debugging器。 但是,如果我点击播放,它会继续。

为什么?

编辑1 :这里是一个截图,你可以看到debugging器已经停止(与上面写的错误代码),但你也可以在即时窗口中看到Visible属性存在。 注意我已经对代码进行了一些更改,试图解决问题,因为我最初发布的问题,但我有同样的错误

编辑2 :我试图将wks设置为Variant而不是对象,并设置wks.Visible=True而不是wks.visible = xlSheetVisible 。 这两个变化都没有帮助。 我仍然得到同样的错误:

在这里输入图像说明

在代码工作了几个星期后,我发现了一个类似的问题。 最终发现,我设置了工作簿保护(而不是预期的表单保护)。 这可以防止通过普通的用户界面进行简单的表单取消隐藏操作,而不会提示设置了工作簿保护以防止结构更改的事实!

试过了你的代码的修改版本 – 这似乎适用于我:

  Sub TestSub() Dim Sheets(4) As Worksheet Dim x As Worksheet Dim i As Integer For Each x In ThisWorkbook.Sheets Set Sheets(i) = x i = i + 1 Next ToggleAllSheets Sheets(), xlSheetVisible End Sub Public Sub ToggleAllSheets(ByRef XlSheets() As Worksheet, xlVis As XlSheetVisibility) Dim xlSheet As Variant For Each xlSheet In XlSheets If xlSheet.Visible <> xlVis Then xlSheet.Visible = xlVis End If Next End Sub 

我也有这个错误:

 Error 1004: Method 'Visible' of object '_Worksheet' failed 

在我的情况下,问题是,代码试图隐藏当前活动工作表。 所以我只需要将ActiveSheet设置为另一个(可见)工作表。