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

时间:2015-01-29 15:08:41

标签: excel vba excel-vba

以下一行:

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

生成错误:

Run-time error '-2147417848 (80010108)':

Method 'Visible' of object '_Worksheet' failed

但是如果我在调试器中单击“播放”,则执行完成没有问题。因此该行导致我的代码进入调试器。但是如果我点击播放它会继续。

为什么?

EDIT1 :这是一个屏幕截图,您可以看到调试器已停止(上面显示的错误代码),但您也可以在即时窗口中看到Visible属性存在。{{ 0}}

EDIT2 :我尝试将wks设置为Variant而不是对象并设置wks.Visible=True而不是wks.visible = xlSheetVisible。这些变化都没有帮助。我仍然得到同样的错误:

Note I have made some changes to the code to try to fix the problem since I originally posted the question, but I have the same error

3 个答案:

答案 0 :(得分:3)

在代码工作几周之后,我发现了一个类似的问题。 最终发现我以某种方式设置了工作簿保护(而不是预期的表单保护)。通过普通用户界面阻止了简单的工作表取消隐藏操作,而没有提供任何暗示,即设置了工作簿保护以防止结构更改!

答案 1 :(得分:0)

尝试了代码的修改版本 - 这似乎对我有用:

            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

答案 2 :(得分:0)

我也遇到了这个错误:

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

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