ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 163|回复: 5

[求助] 代码修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-5 14:39 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wjdcpa 于 2024-10-5 14:43 编辑

Sub UnprotectOnlyWhiteCells()
    Dim ws As Worksheet
    Dim cell As Range
    Dim protectPassword As String
    Dim whiteColor As Long

    ' 设置保护密码,如果之前没有设置过,可以为空字符串
    protectPassword = "" ' 你的保护密码,如果没有则留空
    ' 设置白色背景的RGB代码
    whiteColor = RGB(255, 255, 255)

    Set ws = ActiveSheet ' 操作当前活动的工作表

    ' 撤销工作表保护
    ws.Unprotect Password:=protectPassword

    ' 先设置所有单元格为未锁定
    ws.Cells.Locked = False

    ' 遍历工作表中的每个单元格
    For Each cell In ws.UsedRange
        ' 如果单元格的背景颜色不是白色,则锁定该单元格
        If cell.Interior.Color <> whiteColor Then
            cell.Locked = True
        End If
    Next cell

    ' 重新保护工作表

ws.Protect Password:=protectPassword, userInterfaceOnly:=True, AllowFiltering:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingRows:=True

End Sub

上面代码中红色的那条不同通过,请教应如何修改,谢谢!


TA的精华主题

TA的得分主题

发表于 2024-10-5 18:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-5 19:13 | 显示全部楼层
  1. protectPassword = "y" ' 你的保护密码,如果没有则留空
复制代码

代码没错,你只要知道这个正确的密码然后换上即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-6 19:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2024-10-5 18:50
可以上传附件看看

请见附件,谢谢!

代码求助.rar

15.52 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-10-6 19:15 | 显示全部楼层
只改了合并的lock的主体
  1. Sub UnprotectOnlyWhiteCellsInPrintArea()
  2. Dim ws As Worksheet
  3. Dim cell As Range
  4. Dim protectPassword As String
  5. Dim whiteColor As Long
  6. Dim printAreaRange As Range

  7. ' 设置保护密码,如果之前没有设置过,可以为空字符串
  8. protectPassword = "" ' 你的保护密码,如果没有则留空
  9. ' 设置白色背景的RGB代码
  10. whiteColor = RGB(255, 255, 255)

  11. Set ws = ActiveSheet ' 操作当前活动的工作表

  12. ' 撤销工作表保护
  13. ws.Unprotect Password:=protectPassword

  14. ' 获取打印区域
  15. If ws.PageSetup.PrintArea <> "" Then
  16.   Set printAreaRange = ws.Range(ws.PageSetup.PrintArea)
  17.   ' 遍历打印区域的每个单元格
  18.   For Each cell In printAreaRange
  19.    If cell.MergeCells Then
  20.     ' 如果是合并单元格,只处理左上角单元格
  21.     If cell.Address = cell.MergeArea.Cells(1, 1).Address Then
  22.      If cell.Interior.Color = whiteColor Then
  23.       cell.MergeArea.Locked = False
  24.      Else
  25.       cell.MergeArea.Locked = True
  26.      End If
  27.     End If
  28.    Else
  29.     ' 如果单元格的背景颜色是白色,则解锁该单元格
  30.     If cell.Interior.Color = whiteColor Then
  31.      cell.Locked = False
  32.     Else
  33.      cell.Locked = True
  34.     End If
  35.    End If
  36.   Next cell
  37. Else
  38.   ' 如果没有设置打印区域,则不进行操作
  39.   MsgBox "没有设置打印区域。"
  40.   Exit Sub
  41. End If

  42. ' 重新保护工作表
  43. ws.Protect Password:=protectPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
  44. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-8 17:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 14:31 , Processed in 0.031390 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表