lok*_*ath 4 excel vba excel-vba
在Excel论坛的帮助下,我创建了一个用户登录表单,其中有5个用户.每个用户只能访问分配给他/她的表单.这工作正常.但是现在我已经保护了"工作簿结构",以避免用户添加/删除工作表.然后我再次登录,而不是显示登录表单,Excel VBA中弹出错误消息:
Error-1004无法设置工作表类的visible属性
当我调试时,错误在以下代码中突出显示,其中工作表的visible属性设置为"True","False"或"xlSheetVeryHidden".
Private Sub Workbook_Open()
Dim wsSht As Worksheet
Worksheets("Splash").Visible = True
Worksheets("Users").Visible = False
For Each wsSht In Worksheets
If Not wsSht.Name = "Splash" Then wsSht.Visible = xlSheetVeryHidden
Next wsSht
With Worksheets("Splash")
.Visible = True
.Activate
End With
frmLogin.Show
bBkIsClose = False
End Sub
Run Code Online (Sandbox Code Playgroud)
有没有办法纠正这个问题,因为我可以像密码保护"工作簿结构"之前那样访问登录表单?
测试时是否同时打开了另一个Excel工作簿?没有明确引用您正在查找的书籍,因此,如果您运行此代码时工作簿中的“Splash”工作表不可用,则宏将尝试将所有工作表设置为隐藏,这可能会引发此错误。
要模拟它,请打开一个新的 Excel 会话并运行此宏:
Sub test()
Dim oSheet As Excel.Worksheet
For Each oSheet In Worksheets
oSheet.Visible = xlSheetVeryHidden
Next oSheet
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我没有对着错误的树吠叫,你也会得到同样的错误。
要解决这个问题,只需将工作簿名称添加到循环中,就会像这样(显然,您必须确保有一个“Splash”工作表,否则会出现错误):
For Each wsSht In Workbooks("Mybook.xlsm").Worksheets
If Not wsSht.Name = "Splash" Then wsSht.Visible = xlSheetVeryHidden
Next wsSht
Run Code Online (Sandbox Code Playgroud)
参考值
| 归档时间: |
|
| 查看次数: |
42153 次 |
| 最近记录: |