excel - Excel VBA:如果工作表受到保护,则无法使用特殊单元格
问题描述
我有一段 Excel VBA 代码,如果工作表不受保护但在受保护时不能正常工作。我已阅读之前的类似查询,但认为它们不适用于这种情况 - 建议的修复不适用或需要重复取消保护/重新保护工作表,我希望尽可能避免。
我的代码如下所示:
Dim NonEmptyCells As Range
Dim Cell As Range
On Error Goto Fin
Set NonEmptyCells = Range("D3:H6").SpecialCells(xlCellTypeBlanks)
For Each Cell In NonEmptyCells
' do stuff with cell
Next Cell
Fin:
On Error GoTo 0
使用“On Error”是为了避免在找到零个空单元格时出现循环。
设置了单元格格式,Range(D3:H6)
因此单元格不会被锁定,也不会被隐藏。
当工作表不受保护时,特殊单元格行正确返回空白单元格的范围,但是当受保护的特殊单元格总是出错时,就好像没有找到空单元格一样。
所有帮助表示赞赏。
解决方案
只有在设置了保护时才能使用用户界面。宏将起作用,工作表将受到保护,不会受到用户他/她自己所做的更改。
在 ThisWorkbook 模块部分中:
Private Sub Workbook_Open()
Worksheets("Sheet1").Protect Password:="yourPassword", UserInterFaceOnly:=True
End Sub
调整您的密码和工作表名称,(确保在运行宏时运行工作簿打开事件,即重新打开它)
推荐阅读
- json - 嵌套数组,使用 JQ 组合多个过滤器
- javascript - 仅使用密码对用户进行身份验证
- ffmpeg - 音频每隔几秒就断断续续
- php - 使用 Twig 渲染多个页面
- google-apps-script - 如何在 Google Sheets 脚本中为系列中的单个数据点设置颜色
- python - 用逗号格式化一个大整数而不使用 .format()
- ubuntu - start-dfs.sh 抛出端口 22:连接超时错误
- javascript - Bootstrap4 .col 始终占用 100% 并垂直堆叠(引导网格不起作用)
- javascript - 有没有办法使用 vanilla Javascript 或 Jquery 在 DOM 中选择一个 span 类?
- apache-kafka - 是否可以使用 Kafka Connect 将 RDBMS 表镜像到 Kafka 流?