以下一行:
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
。这些变化都没有帮助。我仍然得到同样的错误:
答案 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
设置为另一张(可见)工作表。