限制用户访问的最佳/最简单的方法将取决于您首先授予他们访问权限的应用程序的哪些方面。
从您的情况和描述来看,您的宏似乎实际上正在执行数据表的更新/操作,并且您的用户通过表单访问该数据?对于大多数应用程序来说,这是一种理想的技术,因为您可以将整个表格显示在一个表单中,但在表单的设计选项中,您可以自定义视图和用户拥有的访问权限。
如果您使用的是让用户通过表单访问数据的技术,那么您可以非常轻松地限制用户操作表数据的能力,而无需使用任何 VBA 进行干预。如果您对 Access 的经验有限,我认为您可能更容易使用可以使用属性菜单更改的表单选项来修改此访问权限。这也将防止您必须修改表单以具有“具有模块”属性。
要使表单字段只读,您只需
- 打开您的表格
- 切换到布局视图或设计视图(您可以在其中修改属性)
- 打开属性表(通过设计功能区中的属性表按钮)
- 选择要设为只读的字段
- 在属性表的数据选项卡中有一个名为“锁定”的属性。将此属性切换为“是”
这将使用户无法更改字段!(从那个表格)
选项二:
如果您希望您的用户仅在普通数据表视图(而不是表单)中查看表格,您可以通过使用“OpenTable”(数据库对象列表)的宏打开它们并将数据模式设置为“只读”。重要提示:这将使用户无法编辑任何字段!如果您需要他们能够编辑其他字段,则不能使用此选项。
HansUp 的解决方案:需要注意的重要事项(因为您是新用户)要使用此 VBA,您需要在该表单的属性表中进行以下更改:
- 选择“表格”作为对象
- 将“HasModule”属性(在“属性表”的“其他”选项卡中)更改为“是”
此外,我无法找到一种简单的方法来访问 Form Current 属性。另一种方法是使用“On Got Focus”(在“事件”选项卡中)通过他建议的 VBA 过程将该文本框的属性设置为“已禁用”。