是否可以将VBA运行到Hide&取消隐藏Excel列而不在VBA中运行Unprotect工作表功能(假设工作表默认受保护)?
当保护工作表并允许“格式列”时,即使工作表受到保护,我也可以自由隐藏和取消隐藏我想要的任何列。出于某种原因,VBA忽略了这一点,虽然Excel似乎允许隐藏/取消隐藏功能,但宏会报告错误并要求删除表单保护。
如果没有其他特殊功能,这甚至不会成为问题,因为当从Excel复制到剪贴板并且宏以Protect表功能结束时,复制的数据最终会丢失。再次 - 不是手动完成也不会发生的事情。
有什么想法吗?我想其中任何一件事都可以解决我的主要问题。
编辑:抱歉,忘了发布VBA代码。现在已经很晚了:
Sub Copy()
'
' Copy Macro
'
'
ActiveSheet.Unprotect
ActiveSheet.Range("$A$4:$I$290").AutoFilter Field:=10, Criteria1:="<>"
Columns("E:E").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = False
Columns("C:C").EntireColumn.Hidden = False
Columns("H:H").EntireColumn.Hidden = True
Application.Goto Reference:="Range"
Selection.Copy
Columns("H:H").EntireColumn.Hidden = False
Columns("E:E").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = True
Columns("C:C").EntireColumn.Hidden = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveWindow.LargeScroll Down:=-2
End Sub
谢谢!
答案 0 :(得分:1)
Protect the worksheet使用UserInterfaceOnly:= True参数,您可以在VBA中执行任何操作,同时正常限制用户。
sub protectOnce()
worksheets("sheet1").unprotect password:="123"
worksheets("sheet1").protect password:="123", UserInterfaceOnly:=True
end sub