【问题标题】:excel initialize 'protect/unprotect sheet' with a userformexcel使用用户表单初始化“保护/取消保护工作表”
【发布时间】:2016-04-21 12:25:04
【问题描述】:

我制作了一个 Excel 文件,制造公司的操作员可以在其中记录故障/故障或任何停止生产的情况。操作员记录故障的方式是单击一张工作表上的按钮,该按钮会打开在 Excel 中使用 VBA 创建的用户表单。

操作员通过下拉菜单填写所有必填字段(操作员姓名、团队、故障类型、机器名称等)。操作人员完成后,可以按下保存按钮,将所有数据以标准化的方式写入另一张表,以便用于数据可视化。

问题

一些操作员不使用用户表单来记录故障,而是直接在数据表中键入,这与以标准化方式记录故障相矛盾。简单地隐藏工作表或在其上输入密码不是一种选择,因为操作员也必须能够看到其他人记录的所有故障。

可能的解决方案

我一直在思考,解决这个问题的唯一解决方案是将数据表设为只读。但是随后出现的问题是用户表单也无法将数据放入工作表中。所以我认为解决这个问题的最好方法是始终在工作表上放置一个只读,但是当用户窗体打开时,工作表不受保护(因此它可以将数据保存在工作表上),并且当用户窗体关闭时它将再次成为只读的。如果您需要什么,请随时询问。

提前致谢。

【问题讨论】:

    标签: excel vba logging readonly userform


    【解决方案1】:

    Worksheet.Protect 方法有一个选项可以只阻止用户更改工作表上的数据。将 UserInterFaceOnly 设置为 True:

    Worksheet.Protect Password:="randompass" UserInterfaceOnly:=True

    那么代码可以改变数据但用户不能

    【讨论】:

    • 那么我把这个放在哪里?在用户窗体后面的 vba 代码中? (私有子 UserForm_Initialize())
    • 好吧,你的代码并不完全有效,但我设法根据你所说的解决了它:我已经在需要只读的工作表上设置了一个保护并放置了 Blad1.Unprotect pwd和保存按钮中的 Blad1.protect pwd。
    • 这个最好放在workbook_open中,这样当你打开你的工作簿时,工作表就会立即受到保护
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多