当有受保护的工作表时如何保持宏运行?

2023-12-13

我用密码保护了工作表 4,因为工作表 4 中的某些单元格不允许用户输入。密码是 1234。

但是,我想运行我的宏,如果出现错误,单元格将自动突出显示。

我的宏未运行并出错,因为我要突出显示的单元格位于受保护的工作表中。

当我单击验证按钮时,如何使工作表 4 保持受保护并使我的宏继续运行?

Private Sub commandbutton1_click()

FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:=1234, WriteResPassword:=1234, _
    ReadOnlyRecommended:=False, CreateBackup:=False

vehicle = Sheets("4").Range("K22")

expenditure_gasoline = Sheets("4").Range("M22")


If vehicle = true and expenditure_gasoline = 0 Then
        MsgBox "it should not be empty", vbcritical

End If

If vehicle = true and expenditure_gasoline = 0 Then Sheets("4").Range("M22").Interior.ColorIndex = 3


End sub

尝试以下更改(未经测试)


V1- 保护工作表免受用户更改,但不更改 VBAUserInterfaceOnly:=True


Option Explicit

Private Sub commandbutton1_click()

    Const PATH_AND_FILENAME = "C:\YourTestFile.xlsx" '<------ Update this path & file name

    Dim wb As Workbook, ws As Worksheet, vehicle As Variant, expenditureGasoline As Variant

    Set wb = Workbooks.Open(Filename:=PATH_AND_FILENAME, WriteResPassword:="1234", _
                            Password:="1234", Format:=xlOpenXMLWorkbookMacroEnabled)
    Set ws = wb.Sheets("4")

    ws.Protect Password:="1234", UserInterfaceOnly:=True '<--- Protect changes from UI only

    Set vehicle = ws.Range("K22")
    Set expenditureGasoline = ws.Range("M22")

    If Not IsError(vehicle) And Not IsError(expenditureGasoline) Then
        If vehicle = True And expenditureGasoline = 0 Then
            ws.Range("M22").Interior.ColorIndex = 3
            MsgBox "Cell M22 should not be empty", vbExclamation
        End If
    End If
End Sub

V2- 更改前取消保护,更改后恢复保护


Private Sub commandbutton1_click()

    Const PATH_AND_FILENAME = "C:\YourTestFile.xlsx" '<------ Update this path & file name

    Dim wb As Workbook, ws As Worksheet, vehicle As Variant, expenditureGasoline As Variant

    Set wb = Workbooks.Open(Filename:=PATH_AND_FILENAME, WriteResPassword:="1234", _
                            Password:="1234", Format:=xlOpenXMLWorkbookMacroEnabled)
    Set ws = wb.Sheets("4")
    Set vehicle = ws.Range("K22")
    Set expenditureGasoline = ws.Range("M22")

    If Not IsError(vehicle) And Not IsError(expenditureGasoline) Then
        If vehicle = True And expenditureGasoline = 0 Then

            ws.Unprotect "1234"                     '<--- Unprotect it before the change
            ws.Range("M22").Interior.ColorIndex = 3
            ws.Protect "1234"                       '<--- Protect it back, after the change

            MsgBox "Cell M22 should not be empty", vbExclamation
        End If
    End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当有受保护的工作表时如何保持宏运行? 的相关文章

随机推荐

  • 匹配有效日期的正则表达式

    我正在尝试编写一个验证日期的正则表达式 正则表达式需要匹配以下内容 M D YYYY 月 日 年 单位数月份可以以前导零开头 例如 03 12 2008 单位数日期可以以前导零开头 例如 3 02 2008 不能包含 2 月 30 日或 2
  • 如何使用通知栏从服务调用活动

    这是我的情况 A1 启动画面活动 A2 主要活动 A3 额外活动 S1 GPS 服务 我从 A1 开始 创建启动 A2 的意图 然后 A1 完成 在 A2 内我创建并绑定 S1 在 S1 内我发出通知 CharSequence text g
  • ASP.NET 返回多个变量进行查看

    我无法弄清楚如何将多个变量返回到视图 像这样的东西 我可以得到一点帮助吗 public ActionResult CheatSheet var var1 from ts in db thisdatabase select ts var va
  • 如何将日期时间分配给带有间隔和日期开始的高图表

    HI 在 highchart 中 有什么方法可以在 x 轴上给出时间 如下所示 1 通过开始时间2 给出时间点数组3 给出时间单位 例如 start time will set as pointStart Date UTC timeArr
  • TeamCity:使用工件的文件版本标记 VCS (Subversion)

    我想在 SVN 中创建一个带有文件版本的标签 标签 我已经通过获取构建生成的主要可执行文件的文件版本来重命名该工件 例如 MyInstaller 1 2 3 1 exe 现在我想在 SVN 中创建一个名为 tags 1 2 3 1 我找不到
  • 在多个文件中具有相同的“require”是否会增加运行时间

    所以我计划将我的函数分成单独的文件 然后将它们导入到一个单独的文件中index js然后成为主要出口国 所以我想知道是否有类似的东西var bcrypt require bcrypt 在我的几个文件中比仅在一个文件中慢 这是我计划在 ind
  • 在 Typescript 中实现 Bull 队列

    我尝试在 Typescript 和 NestJS 中实现 Bull 队列 我的代码 Injectable export class MailService constructor InjectQueue mail private reado
  • 设置短值 Java

    我正在 J2ME 中编写一些代码 我有一个带有方法的类setTableId Short tableId 现在当我尝试写作时setTableId 100 它给出了编译时错误 如何在不声明另一个短变量的情况下设置短值 设置时Long我可以使用的
  • Android 更新ListView

    我看过Android 如何更新当前显示的ListView项目 and http commonsware com Android excerpt pdf和Android文档 但我还是不明白 我的问题 使用处理程序 我尝试更新 Stock 数据
  • Matlab中预计算函数的缓存结果

    我有两个数组 x and y x是函数的输入 y是函数值 例如 x 1 2 3 4 5 6 7 8 9 10 y 3 6 2 4 1 6 7 0 1 8 两者的长度相同 假设我有另一个数组z含有 2 3 8 9 10 3 长度不等于x an
  • 找出所有可能的欧拉循环

    我已经实现了一种算法来查找无向图中给定起始顶点的欧拉循环 使用 DFS 并删除访问的边 但它总是只返回一条路径 如何修改算法以搜索顶点的所有可能的欧拉循环 这是相关代码 typedef int Graph 200 200 adjacency
  • 如何使用socket.io从节点连接到telnet服务器

    我可能没有输入正确的搜索词 但我似乎找不到允许我的节点应用程序启动与另一个 telnet 服务器 非节点 的 socket io 客户端连接的好例子 下面是我的节点应用程序尝试连接到 telnet 服务器 var ioc require s
  • 除了 COM 之外,还有更好的方法来远程控制 Excel 吗?

    我正在开发一个回归测试工具 该工具将验证大量的 Excel 电子表格 目前 我使用最新版本的 pywin32 产品通过 Python 脚本通过 COM 控制它们 不幸的是 COM 似乎有许多恼人的缺点 例如 最轻微的干扰似乎就能中断与 CO
  • 创建用于导航的 ViewModel

    我有一个带有多个视图的 MVC 4 应用程序 IE 产品 食谱 分销商和商店 每个视图都基于一个模型 让我们保持简单 假设我的所有控制器都传递一个类似的视图模型 看起来像我的 Product 操作 public ActionResult I
  • 从代码隐藏中将页面异步模式设置为 true

    是否可以在我的代码隐藏文件中设置页面指令的异步模式 我没有办法直接修改属性 并努力寻找一种在我的代码隐藏中实现此功能的方法 我尝试在我的 Page Load 方法中添加Page AsyncMode true 但它返回以下错误 由于其保护级别
  • 如何使用 # 作为 CoffeeScript hereregex 的一部分?

    我正在尝试匹配 jQuery Mobile URL 的哈希片段 如下所示 matches window location hash match we re interested in the hash fragment the path t
  • Python:Flask 的模拟补丁错误

    在编写 Python 方面 我完全是个新手 更不用说测试它了 这是我的 Flask 端点 blueprint route mailing finish
  • 如何更换|| (两个管道)来自带有 | 的字符串(一)管道

    我收到此标签内一些 json 格式图像的响应 xmlImageIds 57948916 57948917 57948918 57948919 57948920 57948921 57948 922 57948923 57948924 579
  • 复制构造函数需要调用依赖于对象的方法,但构造函数不能是虚拟的

    我有一个带有两个继承类的抽象基类 在这两个类中 我定义了一个由构造函数使用的虚拟方法 现在我需要创建一个复制构造函数 但我不能将复制构造函数声明为虚拟 但我希望其中的方法调用依赖于作为参数提供的对象的类型 我该如何解决这个问题 现在我使用基
  • 当有受保护的工作表时如何保持宏运行?

    我用密码保护了工作表 4 因为工作表 4 中的某些单元格不允许用户输入 密码是 1234 但是 我想运行我的宏 如果出现错误 单元格将自动突出显示 我的宏未运行并出错 因为我要突出显示的单元格位于受保护的工作表中 当我单击验证按钮时 如何使