excel 使用用户表单初始化 'protect/unprotect sheet'

excel initialize 'protect/unprotect sheet' with a userform

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

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

问题

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

可能的解决方案

我一直在想,解决这个问题的唯一方法是将数据-sheet设为只读。但是随后出现的问题是用户窗体也无法将数据放入 sheet 中。所以我认为解决这个问题的最好方法是始终在 sheet 上设置只读,但是当用户窗体打开时,sheet 不受保护(因此它可以将数据保存在 sheet),当用户窗体关闭时,它将再次变为只读。有什么需要随时问。

提前致谢。

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

Worksheet.Protect 密码:="randompass" UserInterfaceOnly:=True

然后代码可以更改数据但用户不能