作者:绿色风
分类:
时间:2022-08-18
浏览:104
楼主 研究研究 |
Q:如何选择性地给工作表添加和解除密码保护?
请问有没有办法用VBA做个按钮,点一下,则给除了工作表名为"P&L"、"BS"、"CF"以外的所有其它工作表添加密码保护, 再点一下,则给除了工作表名为"P&L"、"BS"、"CF"以外的所有其它工作表解除密码保护。 换句话说,就是忽略名字为"P&L"、"BS"、"CF"的工作表,并给其余的所有工作表添加密码保护和解除密码保护。
A:首先要有个可以识别点了几次的问题,我们先想到的是某种变量
1:无敌老师想到的是 active控件中的按钮
- Private Sub CommandButton1_Click()
- If CommandButton1.Caption = "保护" Then
- CommandButton1.Caption = "撤销"
- For Each w In Worksheets
- If w.Name <> "P&L" And w.Name <> "BS" And w.Name <> "CF" Then
- w.Protect "123"
- End If
- Next
- Else
- CommandButton1.Caption = "保护"
- For Each w In Worksheets
- If w.Name <> "P&L" And w.Name <> "BS" And w.Name <> "CF" Then
- w.Unprotect "123"
- End If
- Next
- End If
- End Sub
这个有个问题 就是当文件重新打开后变量就不准了
然后我想到的是2 点入手
一打开工作表时确然
- Public k As Boolean
- Private Sub Workbook_Open()
- For X = 1 To Sheets.Count
- If Sheets(X).ProtectContents Then
- k = True
- Exit Sub
- End If
- Next X
- End Sub
2才是操作主体
- Public k As Boolean
- Sub a()
- If k = False Then
- MsgBox "现在开始文件保护"
- k = True
- For X = 1 To Sheets.Count
- If Sheets(X).Name <> "P&L" And Sheets(X).Name <> "BS" And Sheets(X).Name <> "CF" Then
- Sheets(X).Protect "123456"
- End If
- Next X
- ActiveSheet.Shapes.Range(Array("Left-Right Arrow Callout 1")).Select
- Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "取消保护"
- Range("A1").Select
- Else
- MsgBox "现在开始取消文件保护"
- k = False
- For X = 1 To Sheets.Count
- If Sheets(X).Name <> "P&L" And Sheets(X).Name <> "BS" And Sheets(X).Name <> "CF" Then
- Sheets(X).Unprotect "123456"
- End If
- Next X
- ActiveSheet.Shapes.Range(Array("Left-Right Arrow Callout 1")).Select
- Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "保护"
- Range("A1").Select
- End If
- End Sub
新建 .rar |
2楼 bishunbiao |
非常实用,学习啦 |
3楼 lnt1231 |
学习啦 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一